diff options
author | Brad King <brad.king@kitware.com> | 2019-05-29 14:40:09 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2019-05-30 13:24:59 (GMT) |
commit | 2d0b0e2b9d50aa14ccf345c727b2da73dfba9bd6 (patch) | |
tree | a47622e41b44f79aa0c1574707efa1576283338e /Tests/CMakeLists.txt | |
parent | f872033d7531ed1d7d7345ff7873442ec8dbcee1 (diff) | |
download | CMake-2d0b0e2b9d50aa14ccf345c727b2da73dfba9bd6.zip CMake-2d0b0e2b9d50aa14ccf345c727b2da73dfba9bd6.tar.gz CMake-2d0b0e2b9d50aa14ccf345c727b2da73dfba9bd6.tar.bz2 |
Do not exclude include directories made implicit by CPATH
Entries of the `CPATH` environment variable are implicitly searched as
include directories by some C/C++ compilers. Since commit 5990ecb741
(Compute implicit include directories from compiler output, 2018-12-07,
v3.14.0-rc1~108^2) these entries are detected by CMake and included in
the `CMAKE_{C,CXX}_IMPLICIT_INCLUDE_DIRECTORIES` variables.
However, we should not exclude them from explicit specification via `-I`
or particularly `-isystem` because they are meant as user-specified
include directories that can be re-ordered without breaking compiler
builtin headers. In particular, we need explicit requests via
`include_directories` with the `SYSTEM` option to result in `-isystem`
so that third-party headers do not produce warnings.
Co-Author: Ben Boeckel <ben.boeckel@kitware.com>
Fixes: #19291
Diffstat (limited to 'Tests/CMakeLists.txt')
-rw-r--r-- | Tests/CMakeLists.txt | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index 431a492..588c8e0 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -3620,6 +3620,24 @@ ${CMake_BINARY_DIR}/bin/cmake -DDIR=dev -P ${CMake_SOURCE_DIR}/Utilities/Release --test-command IncludeDirectories) list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/IncludeDirectories") + if(CMAKE_GENERATOR MATCHES "^((Unix|MSYS) Makefiles|Ninja)$" AND + ((CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.4) + OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND NOT "x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC") + OR (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang"))) + add_test(IncludeDirectoriesCPATH ${CMAKE_CTEST_COMMAND} + --build-and-test + "${CMake_SOURCE_DIR}/Tests/IncludeDirectoriesCPATH" + "${CMake_BINARY_DIR}/Tests/IncludeDirectoriesCPATH" + --build-two-config + ${build_generator_args} + --build-project IncludeDirectoriesCPATH + --build-options ${build_options}) + list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/IncludeDirectoriesCPATH") + set_tests_properties(IncludeDirectoriesCPATH + PROPERTIES + ENVIRONMENT "CPATH=${CMAKE_CURRENT_SOURCE_DIR}/IncludeDirectoriesCPATH/viacpath") + endif() + add_test(InterfaceLinkLibraries ${CMAKE_CTEST_COMMAND} --build-and-test "${CMake_SOURCE_DIR}/Tests/InterfaceLinkLibraries" |