Przeglądaj źródła

Improved the usage of the plug-in build system for external projects.

Sascha Zelzer 14 lat temu
rodzic
commit
02ee6704ed

+ 3 - 0
CMake/ctkMacroBuildPlugin.cmake

@@ -130,6 +130,9 @@ MACRO(ctkMacroBuildPlugin)
   INCLUDE_DIRECTORIES(
   INCLUDE_DIRECTORIES(
     ${my_includes}
     ${my_includes}
     )
     )
+
+  # Add Qt include dirs and defines
+  INCLUDE(${QT_USE_FILE})
     
     
   # Add the library directories from the external project
   # Add the library directories from the external project
   ctkFunctionGetLibraryDirs(my_library_dirs ${lib_name})
   ctkFunctionGetLibraryDirs(my_library_dirs ${lib_name})

+ 29 - 3
CMake/ctkMacroSetupExternalPlugins.cmake

@@ -21,7 +21,7 @@
 
 
 MACRO(ctkMacroSetupExternalPlugins )
 MACRO(ctkMacroSetupExternalPlugins )
 
 
-  ctkMacroParseArguments(MY "BUILD_OPTION_PREFIX" "" ${ARGN})
+  ctkMacroParseArguments(MY "BUILD_OPTION_PREFIX;BUILD_ALL" "COMPACT_OPTIONS" ${ARGN})
 
 
   IF(NOT MY_DEFAULT_ARGS)
   IF(NOT MY_DEFAULT_ARGS)
     MESSAGE(FATAL_ERROR "Empty plugin list")
     MESSAGE(FATAL_ERROR "Empty plugin list")
@@ -33,12 +33,38 @@ MACRO(ctkMacroSetupExternalPlugins )
     SET(MY_BUILD_OPTION_PREFIX "BUILD_")
     SET(MY_BUILD_OPTION_PREFIX "BUILD_")
   ENDIF()
   ENDIF()
 
 
+  IF(NOT MY_BUILD_ALL)
+    SET(MY_BUILD_ALL 0)
+  ENDIF()
+
+  # Set up Qt, if not already done
+  IF(NOT QT4_FOUND)
+    SET(minimum_required_qt_version "4.6")
+    FIND_PACKAGE(Qt4 REQUIRED)
+
+    IF("${QT_VERSION_MAJOR}.${QT_VERSION_MINOR}" VERSION_LESS "${minimum_required_qt_version}")
+      MESSAGE(FATAL_ERROR "error: CTK requires Qt >= ${minimum_required_qt_version} -- you cannot use Qt ${QT_VERSION_MAJOR}.${QT_VERSION_MINOR}.${QT_VERSION_PATCH}.")
+    ENDIF()
+  ENDIF()
+
   SET(plugin_dirswithoption )
   SET(plugin_dirswithoption )
   SET(plugin_subdirs )
   SET(plugin_subdirs )
   FOREACH(plugin ${plugin_list})
   FOREACH(plugin ${plugin_list})
     ctkFunctionExtractOptionNameAndValue(${plugin} plugin_name plugin_value)
     ctkFunctionExtractOptionNameAndValue(${plugin} plugin_name plugin_value)
-    SET(option_name ${MY_BUILD_OPTION_PREFIX}${plugin_name})
+    IF(MY_COMPACT_OPTIONS)
+      STRING(REPLACE "/" ";" _tokens ${plugin_name})
+      LIST(GET _tokens -1 option_name)
+      SET(option_name ${MY_BUILD_OPTION_PREFIX}${option_name})
+    ELSE()
+      SET(option_name ${MY_BUILD_OPTION_PREFIX}${plugin_name})
+    ENDIF()
+    SET(${plugin_name}_option_name ${option_name})
+
     OPTION(${option_name} "Build ${plugin_name} Plugin." ${plugin_value})
     OPTION(${option_name} "Build ${plugin_name} Plugin." ${plugin_value})
+    IF(MY_BUILD_ALL)
+      SET(${option_name} 1)
+    ENDIF()
+
     LIST(APPEND plugin_subdirs "${plugin_name}")
     LIST(APPEND plugin_subdirs "${plugin_name}")
     LIST(APPEND plugin_dirswithoption "${CMAKE_CURRENT_SOURCE_DIR}/${plugin_name}^^${option_name}")
     LIST(APPEND plugin_dirswithoption "${CMAKE_CURRENT_SOURCE_DIR}/${plugin_name}^^${option_name}")
   ENDFOREACH()
   ENDFOREACH()
@@ -47,7 +73,7 @@ MACRO(ctkMacroSetupExternalPlugins )
   ctkMacroValidateBuildOptions("${CMAKE_CURRENT_BINARY_DIR}" "${CTK_DGRAPH_EXECUTABLE}" "${plugin_dirswithoption}")
   ctkMacroValidateBuildOptions("${CMAKE_CURRENT_BINARY_DIR}" "${CTK_DGRAPH_EXECUTABLE}" "${plugin_dirswithoption}")
 
 
   FOREACH(plugin ${plugin_subdirs})
   FOREACH(plugin ${plugin_subdirs})
-    IF(${MY_BUILD_OPTION_PREFIX}${plugin})
+    IF(${${plugin}_option_name})
       ADD_SUBDIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/${plugin})
       ADD_SUBDIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/${plugin})
     ENDIF()
     ENDIF()
   ENDFOREACH()
   ENDFOREACH()