1include(${CMAKE_CURRENT_LIST_DIR}/test_utils.cmake) 2 3# No keywords that miss any values, _KEYWORDS_MISSING_VALUES should not be defined 4cmake_parse_arguments(PREF "" "P1" "P2" P1 p1 P2 p2_a p2_b) 5 6TEST(PREF_KEYWORDS_MISSING_VALUES "UNDEFINED") 7 8# Keyword should even be deleted from the actual scope 9set(PREF_KEYWORDS_MISSING_VALUES "What ever") 10cmake_parse_arguments(PREF "" "" "") 11 12TEST(PREF_KEYWORDS_MISSING_VALUES "UNDEFINED") 13 14# Given missing keywords as only option 15cmake_parse_arguments(PREF "" "P1" "P2" P1) 16 17TEST(PREF_KEYWORDS_MISSING_VALUES "P1") 18TEST(PREF_P1 "UNDEFINED") 19TEST(PREF_UNPARSED_ARGUMENTS "UNDEFINED") 20 21# Mixed with unparsed arguments 22cmake_parse_arguments(UPREF "" "P1" "P2" A B P2 C P1) 23TEST(UPREF_KEYWORDS_MISSING_VALUES "P1") 24TEST(UPREF_UNPARSED_ARGUMENTS A B) 25 26# one_value_keyword followed by option 27cmake_parse_arguments(REF "OP" "P1" "" P1 OP) 28TEST(REF_KEYWORDS_MISSING_VALUES "P1") 29TEST(REF_UNPARSED_ARGUMENTS "UNDEFINED") 30TEST(REF_OP "TRUE") 31 32# Counter Test 33cmake_parse_arguments(REF "OP" "P1" "" P1 p1 OP) 34TEST(REF_KEYWORDS_MISSING_VALUES "UNDEFINED") 35TEST(REF_P1 "p1") 36TEST(REF_UNPARSED_ARGUMENTS "UNDEFINED") 37TEST(REF_OP "TRUE") 38 39# one_value_keyword followed by a one_value_keyword 40cmake_parse_arguments(REF "" "P1;P2" "" P1 P2 p2) 41TEST(REF_KEYWORDS_MISSING_VALUES "P1") 42TEST(REF_P1 "UNDEFINED") 43TEST(REF_UNPARSED_ARGUMENTS "UNDEFINED") 44TEST(REF_P2 "p2") 45 46# Counter Test 47cmake_parse_arguments(REF "" "P1;P2" "" P1 p1 P2 p2) 48TEST(REF_KEYWORDS_MISSING_VALUES "UNDEFINED") 49TEST(REF_P1 "p1") 50TEST(REF_UNPARSED_ARGUMENTS "UNDEFINED") 51TEST(REF_P2 "p2") 52 53# one_value_keyword followed by a multi_value_keywords 54cmake_parse_arguments(REF "" "P1" "P2" P1 P2 p1 p2) 55TEST(REF_KEYWORDS_MISSING_VALUES "P1") 56TEST(REF_P1 "UNDEFINED") 57TEST(REF_UNPARSED_ARGUMENTS "UNDEFINED") 58TEST(REF_P2 p1 p2) 59 60# Counter Examples 61cmake_parse_arguments(REF "" "P1" "P2" P1 p1 P2 p1 p2) 62TEST(REF_KEYWORDS_MISSING_VALUES "UNDEFINED") 63TEST(REF_P1 "p1") 64TEST(REF_UNPARSED_ARGUMENTS "UNDEFINED") 65TEST(REF_P2 p1 p2) 66 67# multi_value_keywords as only option 68cmake_parse_arguments(REF "" "P1" "P2" P2) 69TEST(REF_KEYWORDS_MISSING_VALUES "P2") 70TEST(REF_P1 "UNDEFINED") 71TEST(REF_UNPARSED_ARGUMENTS "UNDEFINED") 72TEST(REF_P2 "UNDEFINED") 73 74# multi_value_keywords followed by option 75cmake_parse_arguments(REF "O1" "" "P1" P1 O1) 76TEST(REF_KEYWORDS_MISSING_VALUES "P1") 77TEST(REF_P1 "UNDEFINED") 78TEST(REF_UNPARSED_ARGUMENTS "UNDEFINED") 79TEST(REF_O1 "TRUE") 80 81# counter test 82cmake_parse_arguments(REF "O1" "" "P1" P1 p1 p2 O1) 83TEST(REF_KEYWORDS_MISSING_VALUES "UNDEFINED") 84TEST(REF_P1 "p1;p2") 85TEST(REF_UNPARSED_ARGUMENTS "UNDEFINED") 86TEST(REF_O1 "TRUE") 87 88# multi_value_keywords followed by one_value_keyword 89cmake_parse_arguments(REF "" "P1" "P2" P2 P1 p1) 90TEST(REF_KEYWORDS_MISSING_VALUES "P2") 91TEST(REF_P1 "p1") 92TEST(REF_UNPARSED_ARGUMENTS "UNDEFINED") 93TEST(REF_P2 "UNDEFINED") 94 95# counter test 96cmake_parse_arguments(REF "" "P1" "P2" P2 p2 P1 p1) 97TEST(REF_KEYWORDS_MISSING_VALUES "UNDEFINED") 98TEST(REF_P1 "p1") 99TEST(REF_UNPARSED_ARGUMENTS "UNDEFINED") 100TEST(REF_P2 "p2") 101 102# one_value_keyword as last argument 103cmake_parse_arguments(REF "" "P1" "P2" A P2 p2 P1) 104TEST(REF_KEYWORDS_MISSING_VALUES "P1") 105TEST(REF_P1 "UNDEFINED") 106TEST(REF_UNPARSED_ARGUMENTS "A") 107TEST(REF_P2 "p2") 108 109# multi_value_keywords as last argument 110cmake_parse_arguments(REF "" "P1" "P2" P1 p1 P2) 111TEST(REF_KEYWORDS_MISSING_VALUES "P2") 112TEST(REF_P1 "p1") 113TEST(REF_P2 "UNDEFINED") 114 115# Multiple one_value_keyword and multi_value_keywords at different places 116cmake_parse_arguments(REF "O1;O2" "P1" "P2" P1 O1 P2 O2) 117TEST(REF_KEYWORDS_MISSING_VALUES P1 P2) 118TEST(REF_P1 "UNDEFINED") 119TEST(REF_P2 "UNDEFINED") 120 121# Duplicated missing keywords 122cmake_parse_arguments(REF "O1;O2" "P1" "P2" P1 O1 P2 O2 P1 P2) 123TEST(REF_KEYWORDS_MISSING_VALUES P1 P2) 124TEST(REF_P1 "UNDEFINED") 125TEST(REF_P2 "UNDEFINED") 126 127# make sure keywords that are never used, don't get added to KEYWORDS_MISSING_VALUES 128cmake_parse_arguments(REF "O1;O2" "P1" "P2") 129TEST(REF_KEYWORDS_MISSING_VALUES "UNDEFINED") 130TEST(REF_O1 FALSE) 131TEST(REF_O2 FALSE) 132TEST(REF_P1 UNDEFINED) 133TEST(REF_P2 UNDEFINED) 134