include(${CMAKE_CURRENT_LIST_DIR}/test_utils.cmake) # example from the documentation # OPTIONAL is a keyword and therefore terminates the definition of # the multi-value DEFINITION before even a single value has been added set(options OPTIONAL FAST) set(oneValueArgs DESTINATION RENAME) set(multiValueArgs TARGETS CONFIGURATIONS) cmake_parse_arguments(MY_INSTALL "${options}" "${oneValueArgs}" "${multiValueArgs}" TARGETS foo DESTINATION OPTIONAL) TEST(MY_INSTALL_DESTINATION UNDEFINED) TEST(MY_INSTALL_OPTIONAL TRUE) macro(foo) set(_options ) set(_oneValueArgs FOO) set(_multiValueArgs ) cmake_parse_arguments(_FOO2 "${_options}" "${_oneValueArgs}" "${_multiValueArgs}" "${ARGN}") cmake_parse_arguments(_FOO1 "${_options}" "${_oneValueArgs}" "${_multiValueArgs}" ${ARGN}) endmacro() foo(FOO foo) TEST(_FOO1_FOO foo) TEST(_FOO2_FOO foo) # Make sure a list is split foo(FOO "foo;bar") TEST(_FOO1_FOO foo) TEST(_FOO1_UNPARSED_ARGUMENTS "bar") TEST(_FOO2_FOO foo) TEST(_FOO2_UNPARSED_ARGUMENTS "bar") # Do not split if argn is quoted foo(FOO "foo\\;bar") TEST(_FOO1_FOO foo) TEST(_FOO1_UNPARSED_ARGUMENTS "bar") TEST(_FOO2_FOO foo;bar) TEST(_FOO2_UNPARSED_ARGUMENTS "UNDEFINED") # Do not split if argn is quoted foo(FOO "foo\\\\;bar") TEST(_FOO1_FOO foo) TEST(_FOO1_UNPARSED_ARGUMENTS "bar") TEST(_FOO2_FOO foo;bar) TEST(_FOO2_UNPARSED_ARGUMENTS "UNDEFINED")