summaryrefslogtreecommitdiffstats
path: root/Tests/CompileOptions/main.cpp
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2018-03-12 13:10:57 (GMT)
committerBrad King <brad.king@kitware.com>2018-03-14 15:10:25 (GMT)
commitce0b9832163624291db04d38984c6aa7ea8ca7d7 (patch)
tree9e1bf0f74675e752b6582f2f239b953c1271521c /Tests/CompileOptions/main.cpp
parentb340cacde869102b2b548b2e7ebc7341334f1d58 (diff)
downloadCMake-ce0b9832163624291db04d38984c6aa7ea8ca7d7.zip
CMake-ce0b9832163624291db04d38984c6aa7ea8ca7d7.tar.gz
CMake-ce0b9832163624291db04d38984c6aa7ea8ca7d7.tar.bz2
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
Diffstat (limited to 'Tests/CompileOptions/main.cpp')
-rw-r--r--Tests/CompileOptions/main.cpp25
1 files changed, 25 insertions, 0 deletions
diff --git a/Tests/CompileOptions/main.cpp b/Tests/CompileOptions/main.cpp
index 63a0480..4779b88 100644
--- a/Tests/CompileOptions/main.cpp
+++ b/Tests/CompileOptions/main.cpp
@@ -12,6 +12,28 @@
#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()
@@ -20,6 +42,9 @@ int main()
#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) ==