FindCUDA: Fix regression under Visual Studio generators
Since commit v3.5.0-rc1~47^2 (FindCUDA: Support special characters in path, 2016-01-15) our add_custom_command calls use VERBATIM so that CMake will automatically quote special characters correctly. However, this breaks the special `$(VCInstallDir)` placeholder used with Visual Studio generators. Since we do not support preservation of such placeholders with VERBATIM (see issue #15001) we must fall back to not using VERBATIM when the placeholder is used. A better fix would be to stop using `$(VCInstallDir)` and use the value of `CMAKE_${CUDA_C_OR_CXX}_COMPILER` instead, but that will require additional semantic and documentation changes. For now simply fix the regression with the above approach. Reported-by: Stephen Sorley <Stephen.Sorley@jhuapl.edu>
This commit is contained in:
parent
6ccc307053
commit
1911cda03e
|
@ -1456,6 +1456,11 @@ macro(CUDA_WRAP_SRCS cuda_target format generated_files)
|
|||
set(cuda_build_comment_string "Building NVCC (${cuda_build_type}) object ${generated_file_relative_path}")
|
||||
endif()
|
||||
|
||||
set(_verbatim VERBATIM)
|
||||
if(ccbin_flags MATCHES "\\$\\(VCInstallDir\\)")
|
||||
set(_verbatim "")
|
||||
endif()
|
||||
|
||||
# Build the generated file and dependency file ##########################
|
||||
add_custom_command(
|
||||
OUTPUT ${generated_file}
|
||||
|
@ -1474,7 +1479,7 @@ macro(CUDA_WRAP_SRCS cuda_target format generated_files)
|
|||
-P "${custom_target_script}"
|
||||
WORKING_DIRECTORY "${cuda_compile_intermediate_directory}"
|
||||
COMMENT "${cuda_build_comment_string}"
|
||||
VERBATIM
|
||||
${_verbatim}
|
||||
)
|
||||
|
||||
# Make sure the build system knows the file is generated.
|
||||
|
@ -1586,6 +1591,11 @@ function(CUDA_LINK_SEPARABLE_COMPILATION_OBJECTS output_file cuda_target options
|
|||
set(do_obj_build_rule FALSE)
|
||||
endif()
|
||||
|
||||
set(_verbatim VERBATIM)
|
||||
if(nvcc_flags MATCHES "\\$\\(VCInstallDir\\)")
|
||||
set(_verbatim "")
|
||||
endif()
|
||||
|
||||
if (do_obj_build_rule)
|
||||
add_custom_command(
|
||||
OUTPUT ${output_file}
|
||||
|
@ -1593,7 +1603,7 @@ function(CUDA_LINK_SEPARABLE_COMPILATION_OBJECTS output_file cuda_target options
|
|||
COMMAND ${CUDA_NVCC_EXECUTABLE} ${nvcc_flags} -dlink ${object_files} -o ${output_file}
|
||||
${flags}
|
||||
COMMENT "Building NVCC intermediate link file ${output_file_relative_path}"
|
||||
VERBATIM
|
||||
${_verbatim}
|
||||
)
|
||||
else()
|
||||
get_filename_component(output_file_dir "${output_file}" DIRECTORY)
|
||||
|
@ -1603,7 +1613,7 @@ function(CUDA_LINK_SEPARABLE_COMPILATION_OBJECTS output_file cuda_target options
|
|||
COMMAND ${CMAKE_COMMAND} -E echo "Building NVCC intermediate link file ${output_file_relative_path}"
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory "${output_file_dir}"
|
||||
COMMAND ${CUDA_NVCC_EXECUTABLE} ${nvcc_flags} ${flags} -dlink ${object_files} -o "${output_file}"
|
||||
VERBATIM
|
||||
${_verbatim}
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
|
Loading…
Reference in New Issue