瀏覽代碼

Simplify system and remove variable CTK_BASE_INCLUDE_DIRS

Reverts commit 6cc6996. By construction, the variables CTK_BASE_LIBRARIES
and CTK_LIBRARIES were never containing duplicates.

Additionally, the variable CTK_BASE_INCLUDE_DIRS has been removed. The list
of include directories associated with each targets is now set once
when CTKConfig.cmake is generated.

Finally, to avoid using this variable for the CTKQtTesting library, this
library is now considered as a "regular" one and a "target_libraries.cmake"
file has been added. That way, function ctkFunctionGet(Include|Lib)Dirs
can be used for CTKQtTesting.

The caveat of this approach is that additional includes passed to the
macro ctkMacroBuildLib won't be configured into CTKConfig.cmake.
Jean-Christophe Fillion-Robin 11 年之前
父節點
當前提交
0233954b34

+ 0 - 11
Applications/ctkQtTesting/CMakeLists.txt

@@ -1,16 +1,6 @@
 project(ctkQtTesting)
 
 #
-# 3rd party dependencies
-#
-find_package(QtTesting REQUIRED)
-include_directories(
-  ${QtTesting_INCLUDE_DIRS}
-  ${CTKQtTesting_INCLUDE_DIRS}
-  ${CTK_BASE_INCLUDE_DIRS}
-  )
-
-#
 # See CTK/CMake/ctkMacroBuildApp.cmake for details
 #
 
@@ -37,7 +27,6 @@ set(KIT_resources
 # Target libraries - See CMake/ctkFunctionGetTargetLibraries.cmake
 # The following macro will read the target libraries from the file 'target_libraries.cmake'
 ctkFunctionGetTargetLibraries(KIT_target_libraries)
-list(APPEND KIT_target_libraries CTKQtTesting)
 
 ctkMacroBuildApp(
   NAME ${PROJECT_NAME}

+ 1 - 1
Applications/ctkQtTesting/target_libraries.cmake

@@ -5,5 +5,5 @@
 # 
 
 set(target_libraries
-  CTKVisualizationVTKWidgets
+  CTKQtTesting
   )

+ 0 - 3
CMake/LastConfigureStep/CMakeLists.txt

@@ -79,9 +79,6 @@ foreach(ctk_target_dependency ${ctk_target_dependencies})
   endif()
 endforeach()
 
-# Clean variable
-list(REMOVE_DUPLICATES CTK_BASE_INCLUDE_DIRS)
-
 #-----------------------------------------------------------------------------
 # Create the CTKConfig.cmake file containing the CTK configuration.
 # Since it might generate configuration file depending

+ 6 - 3
CMake/LastConfigureStep/CTKGenerateCTKConfig.cmake

@@ -144,12 +144,15 @@ set(CTK_CONFIG_CODE "${CTK_CONFIG_CODE}set(CTK_QT_QMAKE_EXECUTABLE \"${QT_QMAKE_
 set(CTK_CONFIG_CODE "${CTK_CONFIG_CODE}# The CTK Qt designer plugins directory\n")
 set(CTK_CONFIG_CODE "${CTK_CONFIG_CODE}set(CTK_QTDESIGNERPLUGINS_DIR \"${CMAKE_LIBRARY_OUTPUT_DIRECTORY}\")\n")
 set(CTK_CONFIG_CODE "${CTK_CONFIG_CODE}# CTK library include dirctories\n")
-foreach(lib ${CTK_LIBRARIES} CTKTesting)
+set(_include_dirs)
+foreach(lib ${CTK_LIBRARIES})
   set(${lib}_INCLUDE_DIRS ${${lib}_SOURCE_DIR} ${${lib}_BINARY_DIR})
   ctkFunctionGetIncludeDirs(${lib}_INCLUDE_DIRS ${lib})
+  list(APPEND _include_dirs ${${lib}_INCLUDE_DIRS})
   set(CTK_CONFIG_CODE "${CTK_CONFIG_CODE}set(${lib}_INCLUDE_DIRS \"${${lib}_INCLUDE_DIRS}\")\n")
 endforeach()
-set(CTK_CONFIG_CODE "${CTK_CONFIG_CODE}set(CTK_INCLUDE_DIRS \"${CTK_BASE_INCLUDE_DIRS}\")\n")
+list(REMOVE_DUPLICATES _include_dirs)
+set(CTK_CONFIG_CODE "${CTK_CONFIG_CODE}set(CTK_INCLUDE_DIRS \"${_include_dirs}\")\n")
 set(CTK_CONFIG_CODE "${CTK_CONFIG_CODE}list(APPEND CTK_INCLUDE_DIRS \"${CTKTesting_INCLUDE_DIRS}\")\n")
 set(CTK_CONFIG_CODE "${CTK_CONFIG_CODE}# CTK library directories that could be used for linking\n")
 foreach(lib ${CTK_LIBRARIES})
@@ -195,7 +198,7 @@ set(CTK_LIBRARY_DIR_CONFIG ${CTK_INSTALL_LIB_DIR})
 
 set(CTK_CONFIG_CODE "####### Expanded from \@CTK_CONFIG_CODE\@ #######\n")
 set(CTK_CONFIG_CODE "${CTK_CONFIG_CODE}# CTK library include dirctories\n")
-foreach(libname ${CTK_LIBRARIES} CTKTesting)
+foreach(libname ${CTK_LIBRARIES})
   set(CTK_CONFIG_CODE "${CTK_CONFIG_CODE}set(${libname}_INCLUDE_DIRS \"\${PACKAGE_PREFIX_DIR}/${CTK_INSTALL_INCLUDE_DIR}\")\n")
 endforeach()
 set(CTK_CONFIG_CODE "${CTK_CONFIG_CODE}set(CTK_INCLUDE_DIRS \"\${PACKAGE_PREFIX_DIR}/${CTK_INSTALL_INCLUDE_DIR}\")\n")

+ 4 - 0
CMake/ctkBlockCheckDependencies.cmake

@@ -80,6 +80,10 @@ set(${QtSOAP_enabling_variable}_LIBRARY_DIRS QtSOAP_LIBRARY_DIRS)
 set(${QtSOAP_enabling_variable}_INCLUDE_DIRS QtSOAP_INCLUDE_DIRS)
 set(${QtSOAP_enabling_variable}_FIND_PACKAGE_CMD QtSOAP)
 
+set(QtTesting_enabling_variable QtTesting_LIBRARIES)
+set(${QtTesting_enabling_variable}_INCLUDE_DIRS QtTesting_INCLUDE_DIRS)
+set(${QtTesting_enabling_variable}_FIND_PACKAGE_CMD QtTesting)
+
 set(qxmlrpc_enabling_variable qxmlrpc_LIBRARY)
 set(${qxmlrpc_enabling_variable}_LIBRARY_DIRS qxmlrpc_LIBRARY_DIRS)
 set(${qxmlrpc_enabling_variable}_INCLUDE_DIRS qxmlrpc_INCLUDE_DIRS)

+ 2 - 13
CMake/ctkMacroBuildLib.cmake

@@ -72,10 +72,6 @@ macro(ctkMacroBuildLib)
   include_directories(
     ${my_includes}
     )
-  #message(lib_name:${lib_name})
-  #foreach(i ${my_includes})
-  #  message(i:${i})
-  #endforeach()
 
   # Add Qt include dirs and defines
   include(${QT_USE_FILE})
@@ -170,15 +166,8 @@ macro(ctkMacroBuildLib)
   target_link_libraries(${lib_name} ${my_libs})
 
   # Update CTK_BASE_LIBRARIES
-  set(new_ctk_base_libraries ${my_libs} ${lib_name})
-  list(REMOVE_DUPLICATES new_ctk_base_libraries)
-  set(CTK_BASE_LIBRARIES ${new_ctk_base_libraries} CACHE INTERNAL "CTK base libraries" FORCE)
-  set(new_ctk_libraries ${CTK_LIBRARIES} ${lib_name})
-  list(REMOVE_DUPLICATES new_ctk_libraries)
-  set(CTK_LIBRARIES ${new_ctk_libraries} CACHE INTERNAL "CTK libraries" FORCE)
-  set(new_ctk_base_include_dirs ${CTK_BASE_INCLUDE_DIRS} ${my_includes})
-  list(REMOVE_DUPLICATES new_ctk_base_include_dirs)
-  set(CTK_BASE_INCLUDE_DIRS ${new_ctk_base_include_dirs} CACHE INTERNAL "CTK includes" FORCE)
+  set(CTK_BASE_LIBRARIES ${my_libs} ${lib_name} CACHE INTERNAL "CTK base libraries" FORCE)
+  set(CTK_LIBRARIES ${CTK_LIBRARIES} ${lib_name} CACHE INTERNAL "CTK libraries" FORCE)
 
   # Install headers
   file(GLOB headers "${CMAKE_CURRENT_SOURCE_DIR}/*.h" "${CMAKE_CURRENT_SOURCE_DIR}/*.tpp")

+ 4 - 1
CMake/ctkMacroBuildQtPlugin.cmake

@@ -50,12 +50,15 @@ macro(ctkMacroBuildQtPlugin)
   # --------------------------------------------------------------------------
   # Include dirs
   set(my_includes
-    ${CTK_BASE_INCLUDE_DIRS}
     ${QT_QTDESIGNER_INCLUDE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_BINARY_DIR}
     ${MY_INCLUDE_DIRECTORIES}
     )
+  if(CTK_SOURCE_DIR)
+    # Add the include directories from the library dependencies
+    ctkFunctionGetIncludeDirs(my_includes ${MY_TARGET_LIBRARIES})
+  endif()
   include_directories(
     ${my_includes}
     )

+ 9 - 11
CMakeLists.txt

@@ -173,10 +173,9 @@ set(CMAKE_MODULE_PATH
   ${CMAKE_MODULE_PATH})
 
 #-----------------------------------------------------------------------------
-# Clear CTK_BASE_INCLUDE_DIRS, CTK_BASE_LIBRARIES and CTK_WRAPPED_LIBRARIES_PYTHONQT
+# Clear CTK_BASE_LIBRARIES and CTK_WRAPPED_LIBRARIES_PYTHONQT
 #
 set(CTK_BASE_LIBRARIES CACHE INTERNAL "CTK base libraries" FORCE)
-set(CTK_BASE_INCLUDE_DIRS CACHE INTERNAL "CTK includes" FORCE)
 set(CTK_WRAPPED_LIBRARIES_PYTHONQT CACHE INTERNAL "CTK libraries wrapped using PythonQt" FORCE)
 
 # Variable use in CTKConfig.cmake.in
@@ -783,6 +782,13 @@ foreach(app ${CTK_APPS})
   list(APPEND target_directories "${CMAKE_CURRENT_SOURCE_DIR}/Applications/${app}^^CTK_APP_${app}")
 endforeach()
 
+# Emulate the use of 'ctk_lib_option' for CTKQtTesting library
+set(CTK_LIB_QtTesting ${CTK_USE_QTTESTING})
+if(CTK_USE_QTTESTING)
+  list(APPEND CTK_LIBS QtTesting)
+  list(APPEND target_directories "${CMAKE_CURRENT_SOURCE_DIR}/Libs/QtTesting^^CTK_LIB_QtTesting")
+endif()
+
 #message(STATUS target_directories:${target_directories})
 
 #-----------------------------------------------------------------------------
@@ -893,6 +899,7 @@ set(CTK_DEPENDENCIES
   OpenIGTLink
   XIP
   ITK
+  QtTesting
   )
 
 if(BUILD_TESTING)
@@ -903,10 +910,6 @@ if(CTK_USE_KWSTYLE)
   list(APPEND CTK_DEPENDENCIES KWStyle)
 endif()
 
-if(CTK_USE_QTTESTING)
-  list(APPEND CTK_DEPENDENCIES QtTesting)
-endif()
-
 #-----------------------------------------------------------------------------
 # Check out the ExternalProjectsContrib repository
 if(CTK_USE_CONTRIBUTED_PLUGINS)
@@ -1065,11 +1068,6 @@ endforeach()
 add_subdirectory(Libs/CommandLineModules)
 
 #-----------------------------------------------------------------------------
-if(CTK_USE_QTTESTING)
-  add_subdirectory(Libs/QtTesting)
-endif()
-
-#-----------------------------------------------------------------------------
 # Add CTK plugin subdirectories
 #
 foreach(plugin ${CTK_PLUGINS})

+ 9 - 9
Libs/QtTesting/CMakeLists.txt

@@ -4,6 +4,7 @@ project(CTKQtTesting)
 # 3rd party dependencies
 #
 find_package(QtTesting REQUIRED)
+set(QtTesting_LIBRARIES QtTesting)
 
 #
 # See CTK/CMake/ctkMacroBuildLib.cmake for details
@@ -107,11 +108,7 @@ if (CTK_LIB_Widgets)
   set(CTK_ADD_WIDGET_EVENT_TRANSLATORS "${CTK_ADD_WIDGET_EVENT_TRANSLATORS}  this->eventTranslator()->addWidgetEventTranslator(new ctkFileDialogEventTranslator(util));\n")
 endif()
 
-set(KIT_INCLUDE_DIRECTORIES
-  ${QtTesting_INCLUDE_DIRS}
-  ${CTK_SUPERBUILD_BINARY_DIR} # For ctkConfig.h
-  )
-
+set(KIT_INCLUDE_DIRECTORIES)
 foreach(libname ${CTK_ENABLED_LIBNAMES})
   list(APPEND KIT_INCLUDE_DIRECTORIES
     ${${libname}_SOURCE_DIR}
@@ -154,17 +151,20 @@ set(KIT_resources
   Resources/ctkQtTesting.qrc
 )
 
-# dependencie dynamic from all the libraries with Widgets + QtTesting
-set(KIT_target_libraries QtTesting)
+# Set QtTesting_LIBRARIES variable
+set(QtTesting_LIBRARIES QtTesting)
 
+# Target libraries - See CMake/ctkFunctionGetTargetLibraries.cmake
+# The following macro will read the target libraries from the file 'target_libraries.cmake'
+ctkFunctionGetTargetLibraries(KIT_target_libraries)
+
+# List of dependency is dynamically generated based the list enabled libraries.
 foreach(libname ${CTK_ENABLED_LIBNAMES})
   if(${libname} MATCHES "Widgets$")
     list(APPEND KIT_target_libraries ${libname})
   endif()
 endforeach()
 
-#message("${KIT_target_libraries}")
-
 ctkMacroBuildLib(
   NAME ${PROJECT_NAME}
   EXPORT_DIRECTIVE ${KIT_export_directive}

+ 9 - 0
Libs/QtTesting/target_libraries.cmake

@@ -0,0 +1,9 @@
+#
+# See CMake/ctkFunctionGetTargetLibraries.cmake
+# 
+# This file should list the libraries required to build the current CTK libraries
+# 
+
+set(target_libraries
+  QtTesting_LIBRARIES
+  )