1
0
mirror of https://github.com/Kitware/CMake.git synced 2025-10-16 22:37:30 +08:00

FindCUDA: Update to properly find MSVC 2017 compiler tools

An implementation that handles the different installation locations of
visual studio compiler tools
This commit is contained in:
Aaron Bray
2018-01-03 11:18:34 -05:00
parent 64b624f118
commit fab1b432eb
2 changed files with 16 additions and 9 deletions

View File

@@ -98,12 +98,13 @@
# CUDA_HOST_COMPILATION_CPP (Default ON) # CUDA_HOST_COMPILATION_CPP (Default ON)
# -- Set to OFF for C compilation of host code. # -- Set to OFF for C compilation of host code.
# #
# CUDA_HOST_COMPILER (Default CMAKE_C_COMPILER, $(VCInstallDir)/bin for VS) # CUDA_HOST_COMPILER (Default CMAKE_C_COMPILER)
# -- Set the host compiler to be used by nvcc. Ignored if -ccbin or # -- Set the host compiler to be used by nvcc. Ignored if -ccbin or
# --compiler-bindir is already present in the CUDA_NVCC_FLAGS or # --compiler-bindir is already present in the CUDA_NVCC_FLAGS or
# CUDA_NVCC_FLAGS_<CONFIG> variables. For Visual Studio targets # CUDA_NVCC_FLAGS_<CONFIG> variables. For Visual Studio targets,
# $(VCInstallDir)/bin is a special value that expands out to the path when # the host compiler is constructed with one or more visual studio macros
# the command is run from within VS. # such as $(VCInstallDir), that expands out to the path when
# the command is run from withing VS.
# #
# CUDA_NVCC_FLAGS # CUDA_NVCC_FLAGS
# CUDA_NVCC_FLAGS_<CONFIG> # CUDA_NVCC_FLAGS_<CONFIG>
@@ -527,7 +528,13 @@ option(CUDA_HOST_COMPILATION_CPP "Generated file extension" ON)
set(CUDA_NVCC_FLAGS "" CACHE STRING "Semi-colon delimit multiple arguments.") set(CUDA_NVCC_FLAGS "" CACHE STRING "Semi-colon delimit multiple arguments.")
if(CMAKE_GENERATOR MATCHES "Visual Studio") if(CMAKE_GENERATOR MATCHES "Visual Studio")
set(CUDA_HOST_COMPILER "$(VCInstallDir)bin" CACHE FILEPATH "Host side compiler used by NVCC") set(_CUDA_MSVC_HOST_COMPILER "$(VCInstallDir)Tools/MSVC/$(VCToolsVersion)/bin/Host$(Platform)/$(PlatformTarget)")
if(MSVC_VERSION LESS 1910)
set(_CUDA_MSVC_HOST_COMPILER "$(VCInstallDir)bin")
endif()
set(CUDA_HOST_COMPILER "${_CUDA_MSVC_HOST_COMPILER}" CACHE FILEPATH "Host side compiler used by NVCC")
else() else()
if(APPLE if(APPLE
AND "${CMAKE_C_COMPILER_ID}" MATCHES "Clang" AND "${CMAKE_C_COMPILER_ID}" MATCHES "Clang"
@@ -1315,11 +1322,11 @@ macro(CUDA_WRAP_SRCS cuda_target format generated_files)
endif() endif()
# This needs to be passed in at this stage, because VS needs to fill out the # This needs to be passed in at this stage, because VS needs to fill out the
# value of VCInstallDir from within VS. Note that CCBIN is only used if # various macros from within VS. Note that CCBIN is only used if
# -ccbin or --compiler-bindir isn't used and CUDA_HOST_COMPILER matches # -ccbin or --compiler-bindir isn't used and CUDA_HOST_COMPILER matches
# $(VCInstallDir)/bin. # _CUDA_MSVC_HOST_COMPILER
if(CMAKE_GENERATOR MATCHES "Visual Studio") if(CMAKE_GENERATOR MATCHES "Visual Studio")
set(ccbin_flags -D "\"CCBIN:PATH=$(VCInstallDir)bin\"" ) set(ccbin_flags -D "\"CCBIN:PATH=${_CUDA_MSVC_HOST_COMPILER}\"" )
else() else()
set(ccbin_flags) set(ccbin_flags)
endif() endif()

View File

@@ -125,7 +125,7 @@ list(APPEND CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS_${build_configuration}})
list( FIND CUDA_NVCC_FLAGS "-ccbin" ccbin_found0 ) list( FIND CUDA_NVCC_FLAGS "-ccbin" ccbin_found0 )
list( FIND CUDA_NVCC_FLAGS "--compiler-bindir" ccbin_found1 ) list( FIND CUDA_NVCC_FLAGS "--compiler-bindir" ccbin_found1 )
if( ccbin_found0 LESS 0 AND ccbin_found1 LESS 0 AND CUDA_HOST_COMPILER ) if( ccbin_found0 LESS 0 AND ccbin_found1 LESS 0 AND CUDA_HOST_COMPILER )
if (CUDA_HOST_COMPILER STREQUAL "$(VCInstallDir)bin" AND DEFINED CCBIN) if (CUDA_HOST_COMPILER STREQUAL "@_CUDA_MSVC_HOST_COMPILER@" AND DEFINED CCBIN)
set(CCBIN -ccbin "${CCBIN}") set(CCBIN -ccbin "${CCBIN}")
else() else()
set(CCBIN -ccbin "${CUDA_HOST_COMPILER}") set(CCBIN -ccbin "${CUDA_HOST_COMPILER}")