From 87df63707859d69a91764b4d491aaec7bec8d312 Mon Sep 17 00:00:00 2001 From: Robert Maynard Date: Sun, 2 Feb 2020 22:07:14 -0500 Subject: CUDA: Do not treat CUDA toolkit include directories as implicit CMake properly detects the toolkit directories as implicit system includes, but CUDA compilers don't add explicit `-isystem` markups to these directories when compiling CUDA code. Due to this limitation, allow users to explicitly specify these directories as SYSTEM dirs. Fixes: #16464, #19864 --- Modules/CMakeTestCUDACompiler.cmake | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Modules/CMakeTestCUDACompiler.cmake b/Modules/CMakeTestCUDACompiler.cmake index d80b55a..05811a8 100644 --- a/Modules/CMakeTestCUDACompiler.cmake +++ b/Modules/CMakeTestCUDACompiler.cmake @@ -78,6 +78,18 @@ else() list(REMOVE_ITEM CMAKE_CUDA_IMPLICIT_LINK_LIBRARIES cudart cudart_static cudadevrt) list(REMOVE_ITEM CMAKE_CUDA_HOST_IMPLICIT_LINK_LIBRARIES cudart cudart_static cudadevrt) + # Remove the CUDA Toolkit include directories from the set of + # implicit system include directories. + # This resolves the issue that NVCC doesn't specify these + # includes as SYSTEM includes when compiling device code, and sometimes + # they contain headers that generate warnings, so let users mark them + # as SYSTEM explicitly + if(CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES) + list(REMOVE_ITEM CMAKE_CUDA_IMPLICIT_INCLUDE_DIRECTORIES + ${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES} + ) + endif() + # Re-configure to save learned information. configure_file( ${CMAKE_ROOT}/Modules/CMakeCUDACompiler.cmake.in -- cgit v0.12