diff options
author | Brad King <brad.king@kitware.com> | 2020-04-09 19:35:33 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2020-04-10 13:37:30 (GMT) |
commit | 9be48c4d0bd4472d87264534e30ba79397bb691e (patch) | |
tree | 957daf5e912dccf125a749c9caff6f8be88a2819 /Tests/IncludeDirectories | |
parent | dc0dc974a98f91a665ff8b0559ebf4a2b218f3b8 (diff) | |
download | CMake-9be48c4d0bd4472d87264534e30ba79397bb691e.zip CMake-9be48c4d0bd4472d87264534e30ba79397bb691e.tar.gz CMake-9be48c4d0bd4472d87264534e30ba79397bb691e.tar.bz2 |
Tests: Add coverage for special characters in include directories
We have tests for special characters in preprocessor definitions and
custom command line arguments. Add such a test for include directories.
Currently the Makefiles generators do not escape paths in `depend.make`
in all cases, so leave a FIXME comment and skip the test for those.
Issue: #20555
Diffstat (limited to 'Tests/IncludeDirectories')
-rw-r--r-- | Tests/IncludeDirectories/CMakeLists.txt | 18 | ||||
-rw-r--r-- | Tests/IncludeDirectories/main.cpp | 11 |
2 files changed, 29 insertions, 0 deletions
diff --git a/Tests/IncludeDirectories/CMakeLists.txt b/Tests/IncludeDirectories/CMakeLists.txt index fa3309f..838a236 100644 --- a/Tests/IncludeDirectories/CMakeLists.txt +++ b/Tests/IncludeDirectories/CMakeLists.txt @@ -65,6 +65,24 @@ else() PROPERTIES COMPILE_FLAGS "-ITarProp") endif() +# Test escaping of special characters in include directory paths. +# FIXME: Implement full support in Makefile generators +if(NOT CMAKE_GENERATOR MATCHES "Make") + set(special_chars "~@#$%^&=[]{}()!'") + if(NOT CMAKE_GENERATOR STREQUAL "Visual Studio 9 2008") + string(APPEND special_chars ",") + endif() + if(NOT WIN32 AND NOT CYGWIN) + string(APPEND special_chars "*?<>") + endif() + set(special_dir "${CMAKE_CURRENT_BINARY_DIR}/special-${special_chars}-include") + file(WRITE "${special_dir}/SpecialDir.h" "#define SPECIAL_DIR_H\n") + set(special_space_dir "${CMAKE_CURRENT_BINARY_DIR}/special-space ${special_chars}-include") + file(WRITE "${special_space_dir}/SpecialSpaceDir.h" "#define SPECIAL_SPACE_DIR_H\n") + target_include_directories(IncludeDirectories PRIVATE "${special_dir}" "${special_space_dir}") + target_compile_definitions(IncludeDirectories PRIVATE INCLUDE_SPECIAL_DIR) +endif() + add_library(ordertest ordertest.cpp) target_include_directories(ordertest SYSTEM PUBLIC SystemIncludeDirectories/systemlib) target_include_directories(ordertest PUBLIC SystemIncludeDirectories/userlib) diff --git a/Tests/IncludeDirectories/main.cpp b/Tests/IncludeDirectories/main.cpp index a59d27c..7368ee9 100644 --- a/Tests/IncludeDirectories/main.cpp +++ b/Tests/IncludeDirectories/main.cpp @@ -3,6 +3,17 @@ #include "SrcProp.h" #include "TarProp.h" +#ifdef INCLUDE_SPECIAL_DIR +# include "SpecialDir.h" +# ifndef SPECIAL_DIR_H +# error "SPECIAL_DIR_H not defined" +# endif +# include "SpecialSpaceDir.h" +# ifndef SPECIAL_SPACE_DIR_H +# error "SPECIAL_SPACE_DIR_H not defined" +# endif +#endif + int main(int argc, char** argv) { return 0; |