ctkFunctionExtractOptionNameAndValue.cmake 1.6 KB

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