浏览代码

Enable absolute paths for SetupExternalPlugins

ADD_SUBDIRECTORY needs an explicit boinary dir in that case
Marco Nolden 13 年之前
父节点
当前提交
ed10fc66f0
共有 1 个文件被更改,包括 12 次插入2 次删除
  1. 12 2
      CMake/ctkMacroSetupExternalPlugins.cmake

+ 12 - 2
CMake/ctkMacroSetupExternalPlugins.cmake

@@ -74,7 +74,11 @@ MACRO(ctkMacroSetupExternalPlugins )
     ENDIF()
 
     LIST(APPEND plugin_subdirs "${plugin_name}")
-    LIST(APPEND plugin_dirswithoption "${CMAKE_CURRENT_SOURCE_DIR}/${plugin_name}^^${option_name}")
+    IF(IS_ABSOLUTE ${plugin_name})
+      LIST(APPEND plugin_dirswithoption "${plugin_name}^^${option_name}")
+    ELSE()
+      LIST(APPEND plugin_dirswithoption "${CMAKE_CURRENT_SOURCE_DIR}/${plugin_name}^^${option_name}")
+    ENDIF()
   ENDFOREACH()
 
   ctkFunctionGenerateDGraphInput(${CMAKE_CURRENT_BINARY_DIR} "${plugin_dirswithoption}" WITH_EXTERNALS)
@@ -86,7 +90,13 @@ MACRO(ctkMacroSetupExternalPlugins )
 
   FOREACH(plugin ${plugin_subdirs})
     IF(${${plugin}_option_name})
-      ADD_SUBDIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/${plugin})
+      IF(IS_ABSOLUTE ${plugin})
+        # get last directory component
+        GET_FILENAME_COMPONENT(_dirname ${plugin} NAME) 
+        ADD_SUBDIRECTORY(${plugin} private_plugins/${_dirname})
+      ELSE()
+        ADD_SUBDIRECTORY(${plugin})
+      ENDIF()
     ENDIF()
   ENDFOREACH()