ctkFunctionExtractOptionNameAndValue.cmake 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #
  2. #
  3. #
  4. FUNCTION(ctkFunctionExtractOptionNameAndValue my_opt var_opt_name var_opt_value)
  5. # Make sure option is correctly formated
  6. IF(NOT "${my_opt}" MATCHES "^[/A-Za-z0-9._]+:(ON|OFF)")
  7. 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")
  8. ENDIF()
  9. # Extract option name and option default value
  10. STRING(REPLACE ":" "\\;" my_opt_list ${my_opt})
  11. SET(my_opt_list ${my_opt_list})
  12. LIST(GET my_opt_list 0 opt_name)
  13. LIST(GET my_opt_list 1 opt_value)
  14. SET(${var_opt_name} ${opt_name} PARENT_SCOPE)
  15. SET(${var_opt_value} ${opt_value} PARENT_SCOPE)
  16. ENDFUNCTION()
  17. #
  18. # Test - Use cmake -DMACRO_TESTING:BOOL=ON -P ctkFunctionExtractOptionNameAndValue.cmake
  19. #
  20. IF(MACRO_TESTING)
  21. MESSAGE("Testing ctkFunctionExtractOptionNameAndValue ...")
  22. #
  23. # Test1
  24. #
  25. SET(test1 "john:ON")
  26. ctkFunctionExtractOptionNameAndValue(${test1} test1_name test1_value)
  27. IF(NOT test1_name STREQUAL "john")
  28. MESSAGE(FATAL_ERROR "test1_name:${test1_name} - Expected:john")
  29. ENDIF()
  30. IF(NOT test1_value STREQUAL "ON")
  31. MESSAGE(FATAL_ERROR "test1_value:${test1_value} - Expected:ON")
  32. ENDIF()
  33. #
  34. # Test2
  35. #
  36. SET(test2 "doe/john:OFF")
  37. ctkFunctionExtractOptionNameAndValue(${test2} test2_name test2_value)
  38. IF(NOT test2_name STREQUAL "doe/john")
  39. MESSAGE(FATAL_ERROR "test1_name:${test2_name} - Expected:doe/john")
  40. ENDIF()
  41. IF(NOT test2_value STREQUAL "OFF")
  42. MESSAGE(FATAL_ERROR "test2_value:${test2_value} - Expected:OFF")
  43. ENDIF()
  44. ENDIF()