Переглянути джерело

ENH: Change ctkMacroExtractOptionNameAndValue into ctkFunctionExtractOptionNameAndValue

In CMake, since functions have their own scope, they are preferred over Macro
Jean-Christophe Fillion-Robin 15 роки тому
батько
коміт
2c3a2115f3

+ 11 - 8
CMake/ctkMacroExtractOptionNameAndValue.cmake

@@ -3,7 +3,7 @@
 #
 #
 
-MACRO(ctkMacroExtractOptionNameAndValue my_opt var_opt_name var_opt_value)
+FUNCTION(ctkFunctionExtractOptionNameAndValue my_opt var_opt_name var_opt_value)
 
  # Make sure option is correctly formated
   IF(NOT "${my_opt}" MATCHES "^[/A-Za-z0-9]+:(ON|OFF)")
@@ -13,21 +13,24 @@ MACRO(ctkMacroExtractOptionNameAndValue my_opt var_opt_name var_opt_value)
   # Extract option name and option default value
   STRING(REPLACE ":" "\\;" my_opt_list ${my_opt})
   SET(my_opt_list ${my_opt_list})
-  LIST(GET my_opt_list 0 ${var_opt_name})
-  LIST(GET my_opt_list 1 ${var_opt_value})
-ENDMACRO()
+  LIST(GET my_opt_list 0 opt_name)
+  LIST(GET my_opt_list 1 opt_value)
+
+  SET(${var_opt_name} ${opt_name} PARENT_SCOPE)
+  SET(${var_opt_value} ${opt_value} PARENT_SCOPE)
+ENDFUNCTION()
 
 #
-# Test - Use cmake -DMACRO_TESTING:BOOL=ON -P ctkMacroExtractOptionNameAndValue.cmake
+# Test - Use cmake -DMACRO_TESTING:BOOL=ON -P ctkFunctionExtractOptionNameAndValue.cmake
 #
 IF(MACRO_TESTING)
 
-  MESSAGE("Testing ctkMacroExtractOptionNameAndValue ...")
+  MESSAGE("Testing ctkFunctionExtractOptionNameAndValue ...")
   #
   # Test1
   #
   SET(test1 "john:ON")
-  ctkMacroExtractOptionNameAndValue(${test1} test1_name test1_value)
+  ctkFunctionExtractOptionNameAndValue(${test1} test1_name test1_value)
   
   IF(NOT test1_name STREQUAL "john")
     MESSAGE(FATAL_ERROR "test1_name:${test1_name} - Expected:john")
@@ -41,7 +44,7 @@ IF(MACRO_TESTING)
   # Test2
   #
   SET(test2 "doe/john:OFF")
-  ctkMacroExtractOptionNameAndValue(${test2} test2_name test2_value)
+  ctkFunctionExtractOptionNameAndValue(${test2} test2_name test2_value)
   
   IF(NOT test2_name STREQUAL "doe/john")
     MESSAGE(FATAL_ERROR "test1_name:${test2_name} - Expected:doe/john")

+ 1 - 1
CMake/ctkMacroAddCtkLibraryOptions.cmake

@@ -16,7 +16,7 @@ MACRO(ctkMacroAddCtkLibraryOptions lib)
     INCLUDE(${filepath})
 
     FOREACH(option ${ctk_library_options})
-      ctkMacroExtractOptionNameAndValue(${option} option_name option_value)
+      ctkFunctionExtractOptionNameAndValue(${option} option_name option_value)
       OPTION(CTK_LIB_${lib}_${option_name} "Enable ${lib} Library ${option_name} option." ${option_value})
     ENDFOREACH()
     

+ 5 - 5
CMakeLists.txt

@@ -89,7 +89,7 @@ SET(CTK_BASE_LIBRARIES CACHE INTERNAL "CTK libraries" FORCE)
 SET(CTK_BASE_INCLUDE_DIRS CACHE INTERNAL "CTK includes" FORCE)
 
 #-----------------------------------------------------------------------------
-# CMake Macro(s)
+# CMake Function(s) and Macro(s)
 #
 INCLUDE(CMake/ctkMacroParseArguments.cmake)
 INCLUDE(CMake/ctkMacroListFilter.cmake)
@@ -99,7 +99,7 @@ INCLUDE(CMake/ctkMacroBuildApp.cmake)
 INCLUDE(CMake/ctkMacroBuildQtDesignerPlugin.cmake)
 INCLUDE(CMake/ctkMacroSetupQt.cmake)
 INCLUDE(CMake/ctkMacroTargetLibraries.cmake) # Import multiple macros
-INCLUDE(CMake/ctkMacroExtractOptionNameAndValue.cmake)
+INCLUDE(CMake/ctkFunctionExtractOptionNameAndValue.cmake)
 INCLUDE(CMake/ctkMacroValidateBuildOptions.cmake)
 INCLUDE(CMake/ctkMacroAddCtkLibraryOptions.cmake)
 INCLUDE(CMake/ctkMacroGenerateDGraphInput.cmake)
@@ -278,7 +278,7 @@ SET(CTK_APPLICATIONS_SUBDIRS )
 #  CTK_LIB_<DIR>/<LIBNAME>_OPT2  (set to ON)
 #
 FOREACH(lib ${CTK_LIBS})
-  ctkMacroExtractOptionNameAndValue(${lib} lib_name lib_value)
+  ctkFunctionExtractOptionNameAndValue(${lib} lib_name lib_value)
   OPTION(CTK_LIB_${lib_name} "Enable ${lib_name} Library." ${lib_value})
   ctkMacroAddCtkLibraryOptions(${lib_name})
   LIST(APPEND CTK_LIBS_SUBDIRS "${lib_name}")
@@ -286,14 +286,14 @@ ENDFOREACH()
 
 # Build options associated with CTK plugins
 FOREACH(plugin ${CTK_PLUGINS})
-  ctkMacroExtractOptionNameAndValue(${plugin} plugin_name plugin_value)
+  ctkFunctionExtractOptionNameAndValue(${plugin} plugin_name plugin_value)
   OPTION(CTK_PLUGIN_${plugin_name} "Build ${plugin_name} Plugin." ${plugin_value})
   LIST(APPEND CTK_PLUGINS_SUBDIRS "${plugin_name}")
 ENDFOREACH()
 
 # Build options associated with CTK applications
 FOREACH(app ${CTK_APPLICATIONS})
-  ctkMacroExtractOptionNameAndValue(${app} app_name app_value)
+  ctkFunctionExtractOptionNameAndValue(${app} app_name app_value)
   OPTION(CTK_APP_${app_name} "Build ${app_name} Application." ${app_value})
   LIST(APPEND CTK_APPLICATIONS_SUBDIRS "${app_name}")
 ENDFOREACH()