File: CornerCases.cmake

package info (click to toggle)
cmake 4.2.3-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 152,456 kB
  • sloc: ansic: 403,896; cpp: 303,920; sh: 4,105; python: 3,583; yacc: 3,106; lex: 1,279; f90: 538; asm: 471; lisp: 375; cs: 270; java: 266; fortran: 239; objc: 215; perl: 213; xml: 198; makefile: 111; javascript: 83; pascal: 63; tcl: 55; php: 25; ruby: 22
file content (54 lines) | stat: -rw-r--r-- 1,598 bytes parent folder | download | duplicates (9)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
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")