diff --git a/Modules/CMakeCUDAInformation.cmake b/Modules/CMakeCUDAInformation.cmake index 2b7d7b2c4c..44e2c2c330 100644 --- a/Modules/CMakeCUDAInformation.cmake +++ b/Modules/CMakeCUDAInformation.cmake @@ -111,6 +111,9 @@ include(CMakeCommonLanguageInclude) # CMAKE_CUDA_LINK_EXECUTABLE if(CMAKE_CUDA_HOST_COMPILER AND CMAKE_CUDA_COMPILER_ID STREQUAL "NVIDIA") + # FIXME: This is too late for the Platform/Windows-NVIDIA-CUDA module to + # see it, so we do not support CMAKE_CUDA_HOST_COMPILER on Windows. + # Move this to Compiler/NVIDIA-CUDA and update the VS generator too. string(APPEND _CMAKE_CUDA_EXTRA_FLAGS " -ccbin=") endif() diff --git a/Modules/Compiler/NVIDIA-CUDA.cmake b/Modules/Compiler/NVIDIA-CUDA.cmake index eb806758ff..a0f7c05e84 100644 --- a/Modules/Compiler/NVIDIA-CUDA.cmake +++ b/Modules/Compiler/NVIDIA-CUDA.cmake @@ -30,7 +30,15 @@ if (CMAKE_CUDA_COMPILER_VERSION VERSION_GREATER_EQUAL 10.2.89) # to get header dependency information set(CMAKE_DEPFILE_FLAGS_CUDA "-MD -MT -MF ") else() - set(CMAKE_CUDA_DEPENDS_EXTRA_COMMANDS " ${_CMAKE_CUDA_EXTRA_FLAGS} ${_CMAKE_COMPILE_AS_CUDA_FLAG} -M -MT -o ") + if(CMAKE_CUDA_HOST_COMPILER AND NOT CMAKE_SYSTEM_NAME STREQUAL "Windows") + # FIXME: Move the main -ccbin= flag from CMakeCUDAInformation to + # a block above, remove this copy, and update the VS generator too. + set(_CMAKE_CUDA_EXTRA_FLAGS_LOCAL " -ccbin=") + else() + set(_CMAKE_CUDA_EXTRA_FLAGS_LOCAL "") + endif() + set(CMAKE_CUDA_DEPENDS_EXTRA_COMMANDS " ${_CMAKE_CUDA_EXTRA_FLAGS}${_CMAKE_CUDA_EXTRA_FLAGS_LOCAL} ${_CMAKE_COMPILE_AS_CUDA_FLAG} -M -MT -o ") + unset(_CMAKE_CUDA_EXTRA_FLAGS_LOCAL) endif() set(CMAKE_CUDA_DEPFILE_FORMAT gcc) if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)