CornerCases.cmake 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. include(${CMAKE_CURRENT_LIST_DIR}/test_utils.cmake)
  2. # example from the documentation
  3. # OPTIONAL is a keyword and therefore terminates the definition of
  4. # the multi-value DEFINITION before even a single value has been added
  5. set(options OPTIONAL FAST)
  6. set(oneValueArgs DESTINATION RENAME)
  7. set(multiValueArgs TARGETS CONFIGURATIONS)
  8. cmake_parse_arguments(MY_INSTALL "${options}" "${oneValueArgs}"
  9. "${multiValueArgs}"
  10. TARGETS foo DESTINATION OPTIONAL)
  11. TEST(MY_INSTALL_DESTINATION UNDEFINED)
  12. TEST(MY_INSTALL_OPTIONAL TRUE)
  13. macro(foo)
  14. set(_options )
  15. set(_oneValueArgs FOO)
  16. set(_multiValueArgs )
  17. cmake_parse_arguments(_FOO2 "${_options}"
  18. "${_oneValueArgs}"
  19. "${_multiValueArgs}"
  20. "${ARGN}")
  21. cmake_parse_arguments(_FOO1 "${_options}"
  22. "${_oneValueArgs}"
  23. "${_multiValueArgs}"
  24. ${ARGN})
  25. endmacro()
  26. foo(FOO foo)
  27. TEST(_FOO1_FOO foo)
  28. TEST(_FOO2_FOO foo)
  29. # Make sure a list is split
  30. foo(FOO "foo;bar")
  31. TEST(_FOO1_FOO foo)
  32. TEST(_FOO1_UNPARSED_ARGUMENTS "bar")
  33. TEST(_FOO2_FOO foo)
  34. TEST(_FOO2_UNPARSED_ARGUMENTS "bar")
  35. # Do not split if argn is quoted
  36. foo(FOO "foo\\;bar")
  37. TEST(_FOO1_FOO foo)
  38. TEST(_FOO1_UNPARSED_ARGUMENTS "bar")
  39. TEST(_FOO2_FOO foo;bar)
  40. TEST(_FOO2_UNPARSED_ARGUMENTS "UNDEFINED")
  41. # Do not split if argn is quoted
  42. foo(FOO "foo\\\\;bar")
  43. TEST(_FOO1_FOO foo)
  44. TEST(_FOO1_UNPARSED_ARGUMENTS "bar")
  45. TEST(_FOO2_FOO foo;bar)
  46. TEST(_FOO2_UNPARSED_ARGUMENTS "UNDEFINED")