Pārlūkot izejas kodu

ENH: Added ctkMacroExtractOptionNameAndValue

Given a variable of the form "John:ON", this macro allow to extract
john and ON and put the result in two variables.
Jean-Christophe Fillion-Robin 15 gadi atpakaļ
vecāks
revīzija
ddd1dd5b7b
1 mainītis faili ar 54 papildinājumiem un 0 dzēšanām
  1. 54 0
      CMake/ctkMacroExtractOptionNameAndValue.cmake

+ 54 - 0
CMake/ctkMacroExtractOptionNameAndValue.cmake

@@ -0,0 +1,54 @@
+
+#
+#
+#
+
+MACRO(ctkMacroExtractOptionNameAndValue 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)")
+    MESSAGE(FATAL_ERROR "Option ${my_opt} is incorrect. Options should be specified using the following format OPT1:[ON|OFF]. For example OPT1:OFF or OPT2:ON")
+  ENDIF()
+
+  # 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()
+
+#
+# Test - Use cmake -DMACRO_TESTING:BOOL=ON -P ctkMacroExtractOptionNameAndValue.cmake
+#
+IF(MACRO_TESTING)
+
+  MESSAGE("Testing ctkMacroExtractOptionNameAndValue ...")
+  #
+  # Test1
+  #
+  SET(test1 "john:ON")
+  ctkMacroExtractOptionNameAndValue(${test1} test1_name test1_value)
+  
+  IF(NOT test1_name STREQUAL "john")
+    MESSAGE(FATAL_ERROR "test1_name:${test1_name} - Expected:john")
+  ENDIF()
+  
+  IF(NOT test1_value STREQUAL "ON")
+    MESSAGE(FATAL_ERROR "test1_value:${test1_value} - Expected:ON")
+  ENDIF()
+
+  #
+  # Test2
+  #
+  SET(test2 "doe/john:OFF")
+  ctkMacroExtractOptionNameAndValue(${test2} test2_name test2_value)
+  
+  IF(NOT test2_name STREQUAL "doe/john")
+    MESSAGE(FATAL_ERROR "test1_name:${test2_name} - Expected:doe/john")
+  ENDIF()
+  
+  IF(NOT test2_value STREQUAL "OFF")
+    MESSAGE(FATAL_ERROR "test2_value:${test2_value} - Expected:OFF")
+  ENDIF()
+  
+ENDIF()