Sfoglia il codice sorgente

ENH: In CMakeLists.txt, change ctk_{libs, plugins, applications) to CTK_{LIBS, PLUGINS, APPLICATIONS}. Also update ctkMacroTargetLibraries.cmake

Split macro ctkMacroCollectAllTargetLibraries into
ctkMacroGetAllTargetLibraries
and
ctkMacroCollectTargetLibraryNames
Jean-Christophe Fillion-Robin 15 anni fa
parent
commit
3be8a58ea5
2 ha cambiato i file con 76 aggiunte e 51 eliminazioni
  1. 61 38
      CMake/ctkMacroTargetLibraries.cmake
  2. 15 13
      CMakeLists.txt

+ 61 - 38
CMake/ctkMacroTargetLibraries.cmake

@@ -15,7 +15,7 @@ MACRO(ctkMacroGetTargetLibraries varname)
   SET(target_libraries )
 
   # Let's make sure target_libraries contains only strings
-  FILE(STRINGS "${filepath}" stringtocheck)
+  FILE(STRINGS "${filepath}" stringtocheck) # read content of 'filepath' into 'stringtocheck'
   STRING(REGEX MATCHALL "[^\\#]\\$\\{.*\\}" incorrect_elements ${stringtocheck})
   FOREACH(incorrect_element ${incorrect_elements})
     STRING(REGEX REPLACE "\\$|\\{|\\}" "" correct_element ${incorrect_element})
@@ -35,54 +35,73 @@ MACRO(ctkMacroGetTargetLibraries varname)
   ENDFOREACH()
 ENDMACRO()
 
-
 #
 #
 #
-MACRO(ctkMacroGetAllTargetLibraries targets subdir varname)
+MACRO(ctkMacroCollectTargetLibraryNames target_dir option_name varname)
 
-  FOREACH(target ${targets})
-    SET(option_prefix)
-    IF(${subdir} STREQUAL "Libs")
-      SET(option_prefix CTK_LIB_)
-    ELSEIF(${subdir} STREQUAL "Plugins")
-      SET(option_prefix CTK_PLUGIN_)
-    ELSEIF(${subdir} STREQUAL "Applications")
-      SET(option_prefix CTK_APP_)
-    ELSE()
-      MESSAGE(FATAL_ERROR "Unknown subdir:${subdir}, expected value are: 'Libs, 'Plugins' or 'Applications'")
-    ENDIF()
+  #MESSAGE(STATUS option_name:${option_name})
+  IF(${${option_name}})
+    #MESSAGE(STATUS target:${target})
+    SET(lib_targets)
 
-    SET(option_name ${option_prefix}${target})
-    #MESSAGE(STATUS option_name:${option_name})
-    IF(${${option_name}})
-      #MESSAGE(STATUS target:${target})
-      SET(lib_targets)
+    SET(filepath ${target_dir}/target_libraries.cmake)
+    #MESSAGE(STATUS filepath:${filepath})
 
-      SET(filepath ${CTK_SOURCE_DIR}/${subdir}/${target}/target_libraries.cmake)
-      #MESSAGE(STATUS filepath:${filepath})
+    # Check if "target_libraries.cmake" file exists
+    IF(NOT EXISTS ${filepath})
+      MESSAGE(FATAL_ERROR "${filepath} doesn't exists !")
+    ENDIF()
 
-      # Check if "target_libraries.cmake" file exists
-      IF(NOT EXISTS ${filepath})
-        MESSAGE(FATAL_ERROR "${filepath} doesn't exists !")
-      ENDIF()
+    # Let's make sure target_libraries contains only strings
+    FILE(STRINGS "${filepath}" stringtocheck)
+    STRING(REGEX MATCHALL "[^#]\\$\\{.*\\}" incorrect_elements ${stringtocheck})
+    FOREACH(incorrect_element ${incorrect_elements})
+      STRING(REGEX REPLACE "\\$|\\{|\\}" "" correct_element ${incorrect_element})
+      MESSAGE(FATAL_ERROR "In ${filepath}, ${incorrect_element} should be replaced by ${correct_element}")
+    ENDFOREACH()
+
+    # Make sure the variable is cleared
+    SET(target_libraries)
+
+    INCLUDE(${filepath})
+    
+    LIST(APPEND ${varname} ${target_libraries})
+    LIST(REMOVE_DUPLICATES ${varname})
+  ENDIF()
+ENDMACRO()
 
-      # Let's make sure target_libraries contains only strings
-      FILE(STRINGS "${filepath}" stringtocheck)
-      STRING(REGEX MATCHALL "[^#]\\$\\{.*\\}" incorrect_elements ${stringtocheck})
-      FOREACH(incorrect_element ${incorrect_elements})
-        STRING(REGEX REPLACE "\\$|\\{|\\}" "" correct_element ${incorrect_element})
-        MESSAGE(FATAL_ERROR "In ${filepath}, ${incorrect_element} should be replaced by ${correct_element}")
-      ENDFOREACH()
+#
+#
+#
+MACRO(ctkMacroCollectAllTargetLibraries targets subdir varname)
+
+  SET(option_prefix)
+  IF(${subdir} STREQUAL "Libs")
+    SET(option_prefix CTK_LIB_)
+  ELSEIF(${subdir} STREQUAL "Plugins")
+    SET(option_prefix CTK_PLUGIN_)
+  ELSEIF(${subdir} STREQUAL "Applications")
+    SET(option_prefix CTK_APP_)
+  ELSE()
+    MESSAGE(FATAL_ERROR "Unknown subdir:${subdir}, expected value are: 'Libs, 'Plugins' or 'Applications'")
+  ENDIF()
+  
+  FOREACH(target ${targets})
 
-      # Make sure the variable is cleared
-      SET(target_libraries )
+    # Make sure the variable is cleared
+    SET(target_libraries )
 
-      INCLUDE(${filepath})
+    SET(option_name ${option_prefix}${target})
+    #MESSAGE(STATUS option_name:${option_name})
 
-      LIST(APPEND ${varname} ${target_libraries})
-      LIST(REMOVE_DUPLICATES ${varname})
-    ENDIF()
+    SET(target_dir "${CTK_SOURCE_DIR}/${subdir}/${target}")
+    #MESSAGE(STATUS target_dir:${target_dir})
+    
+    ctkMacroCollectTargetLibraryNames(${target_dir} ${option_name} target_libraries)
+
+    LIST(APPEND ${varname} ${target_libraries})
+    LIST(REMOVE_DUPLICATES ${varname})
   ENDFOREACH()
   
 ENDMACRO()
@@ -92,6 +111,7 @@ ENDMACRO()
 #
 MACRO(ctkMacroGetAllCTKTargetLibraries all_target_libraries varname)
   SET(re_ctklib "^CTK[a-zA-Z0-9]+$")
+  SET(_tmp_list)
   LIST(APPEND _tmp_list ${all_target_libraries})
   ctkMacroListFilter(_tmp_list re_ctklib OUTPUT_VARIABLE ${varname})
   #MESSAGE(STATUS varname:${varname}:${${varname}})
@@ -112,6 +132,9 @@ ENDMACRO()
 # 
 #
 MACRO(ctkMacroShouldAddExternalProject libraries_variable_name resultvar)
+  IF(NOT DEFINED NON_CTK_DEPENDENCIES)
+    MESSAGE(FATAL_ERROR "Variable NON_CTK_DEPENDENCIES is undefined !")
+  ENDIF() 
   LIST(FIND NON_CTK_DEPENDENCIES ${libraries_variable_name} index)
   SET(${resultvar} FALSE)
   IF(${index} GREATER -1)

+ 15 - 13
CMakeLists.txt

@@ -116,7 +116,7 @@ ENDIF()
 #-----------------------------------------------------------------------------
 # CTK Libraries
 #
-SET(ctk_libs
+SET(CTK_LIBS
   Core
   Widgets
   DICOM/Core
@@ -127,14 +127,14 @@ SET(ctk_libs
 #-----------------------------------------------------------------------------
 # CTK Plugins
 #
-SET(ctk_plugins
+SET(CTK_PLUGINS
   #org.commontk.cli
   )
 
 #-----------------------------------------------------------------------------
 # CTK Applications
 #
-SET(ctk_applications
+SET(CTK_APPLICATIONS
   ctkDICOM
   ctkDICOMIndexer
   )
@@ -166,27 +166,29 @@ OPTION(CTK_USE_KWSTYLE     "Enable sourcecode-based style tests." OFF)
 #  CTK_LIB_<DIR>/<LIBNAME>_OPT1  (set to OFF)
 #  CTK_LIB_<DIR>/<LIBNAME>_OPT2  (set to ON)
 #
-FOREACH(lib ${ctk_libs})
+FOREACH(lib ${CTK_LIBS})
   OPTION(CTK_LIB_${lib} "Enable ${lib} Library." ON)
   ctkMacroAddCtkLibraryOptions(${lib})
 ENDFOREACH()
 
 # Build options associated with CTK plugins
-FOREACH(plugin ${ctk_plugins})
+FOREACH(plugin ${CTK_PLUGINS})
   OPTION(CTK_PLUGIN_${plugin} "Build ${plugin} Plugin." ON)
 ENDFOREACH()
 
 # Build options associated with CTK applications
-FOREACH(app ${ctk_applications})
+FOREACH(app ${CTK_APPLICATIONS})
   OPTION(CTK_APP_${app} "Build ${app} Application." ON)
 ENDFOREACH()
 
 #-----------------------------------------------------------------------------
-# Check dependencies
 #
-ctkMacroGetAllTargetLibraries("${ctk_libs}" "Libs" ALL_TARGET_LIBRARIES)
-ctkMacroGetAllTargetLibraries("${ctk_plugins}" "Plugins" ALL_TARGET_LIBRARIES)
-ctkMacroGetAllTargetLibraries("${ctk_applications}" "Applications" ALL_TARGET_LIBRARIES)
+#-----------------------------------------------------------------------------
+# Collect CTK library target dependencies
+#
+ctkMacroCollectAllTargetLibraries("${CTK_LIBS}" "Libs" ALL_TARGET_LIBRARIES)
+ctkMacroCollectAllTargetLibraries("${CTK_PLUGINS}" "Plugins" ALL_TARGET_LIBRARIES)
+ctkMacroCollectAllTargetLibraries("${CTK_APPLICATIONS}" "Applications" ALL_TARGET_LIBRARIES)
 #MESSAGE(STATUS ALL_TARGET_LIBRARIES:${ALL_TARGET_LIBRARIES})
 
 #-----------------------------------------------------------------------------
@@ -203,7 +205,7 @@ ENDIF()
 #-----------------------------------------------------------------------------
 # Add CTK library subdirectories
 #
-FOREACH(lib ${ctk_libs})
+FOREACH(lib ${CTK_LIBS})
   IF (CTK_LIB_${lib})
     ADD_SUBDIRECTORY(Libs/${lib})
   ENDIF()
@@ -212,7 +214,7 @@ ENDFOREACH()
 #-----------------------------------------------------------------------------
 # Add CTK plugin subdirectories
 #
-FOREACH(plugin ${ctk_plugins})
+FOREACH(plugin ${CTK_PLUGINS})
   IF (CTK_PLUGIN_${plugin})
     ADD_SUBDIRECTORY(Plugins/${plugin})
   ENDIF()
@@ -221,7 +223,7 @@ ENDFOREACH()
 #-----------------------------------------------------------------------------
 # Add CTK application subdirectories
 #
-FOREACH(app ${ctk_applications})
+FOREACH(app ${CTK_APPLICATIONS})
   IF (CTK_APP_${app})
     ADD_SUBDIRECTORY(Applications/${app})
   ENDIF()