mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-02 03:39:43 -06:00
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
57 lines
1.1 KiB
C++
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;
|
|
}
|