Files
CMake/Tests/CompileOptions/main.cpp
Brad King ce0b983216 target_compile_options: Add syntax to specify shell strings
Options specified via `COMPILE_OPTIONS` and `INTERFACE_COMPILE_OPTIONS`
are deduplicated, but individual options can legitimately be duplicated
when grouped with other options, e.g.

    -D A -D B

After deduplication that becomes `-D A B`.  Therefore we need a way to
treat groups of options as units during deduplication.  A simple approach
is to specify each group as one option, e.g.

    "-D A" "-D B"

However, that conflicts with options that legitimately have spaces.  To
break this ambiguity, add a `SHELL:` prefix syntax to specify that an
option should be parsed like shell command line arguments after
deduplication, e.g.

    "SHELL:-D A" "SHELL:-D B"

These will survive deduplication intact, and then be parsed to produce
`-D A -D B` on the final command line.

Fixes: #15826
2018-03-14 11:10:25 -04:00

57 lines
1.1 KiB
C++

#ifndef TEST_DEFINE
#error Expected definition TEST_DEFINE
#endif
#ifndef NEEDS_ESCAPE
#error Expected definition NEEDS_ESCAPE
#endif
#ifdef DO_GNU_TESTS
#ifndef TEST_DEFINE_GNU
#error Expected definition TEST_DEFINE_GNU
#endif
#endif
#ifndef NO_DEF_TESTS
#ifndef DEF_A
#error Expected definition DEF_A
#endif
#ifndef DEF_B
#error Expected definition DEF_B
#endif
#ifndef DEF_C
#error Expected definition DEF_C
#endif
#ifndef DEF_D
#error Expected definition DEF_D
#endif
#ifndef DEF_STR
#error Expected definition DEF_STR
#endif
#endif
#include <string.h>
int main()
{
return (strcmp(NEEDS_ESCAPE, "E$CAPE") == 0
#ifdef TEST_OCTOTHORPE
&& strcmp(TEST_OCTOTHORPE, "#") == 0
#endif
#ifndef NO_DEF_TESTS
&& strcmp(DEF_STR, "string with spaces") == 0
#endif
&&
strcmp(EXPECTED_C_COMPILER_VERSION, TEST_C_COMPILER_VERSION) == 0 &&
strcmp(EXPECTED_CXX_COMPILER_VERSION, TEST_CXX_COMPILER_VERSION) ==
0 &&
TEST_C_COMPILER_VERSION_EQUALITY == 1 &&
TEST_CXX_COMPILER_VERSION_EQUALITY == 1)
? 0
: 1;
}