mirror of
https://github.com/Kitware/CMake.git
synced 2025-10-17 15:32:10 +08:00
CUDA: Perform CUDA toolkit include directory detection only on nvcc
The code is specific to nvcc.
This commit is contained in:
@@ -86,7 +86,7 @@ if(${CMAKE_GENERATOR} MATCHES "Visual Studio")
|
|||||||
set(CMAKE_CUDA_HOST_IMPLICIT_LINK_LIBRARIES "")
|
set(CMAKE_CUDA_HOST_IMPLICIT_LINK_LIBRARIES "")
|
||||||
set(CMAKE_CUDA_HOST_IMPLICIT_LINK_DIRECTORIES "")
|
set(CMAKE_CUDA_HOST_IMPLICIT_LINK_DIRECTORIES "")
|
||||||
set(CMAKE_CUDA_HOST_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")
|
set(CMAKE_CUDA_HOST_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")
|
||||||
elseif(CMAKE_CUDA_COMPILER_ID STREQUAL NVIDIA)
|
elseif(CMAKE_CUDA_COMPILER_ID STREQUAL "NVIDIA")
|
||||||
set(_nvcc_log "")
|
set(_nvcc_log "")
|
||||||
string(REPLACE "\r" "" _nvcc_output_orig "${CMAKE_CUDA_COMPILER_PRODUCED_OUTPUT}")
|
string(REPLACE "\r" "" _nvcc_output_orig "${CMAKE_CUDA_COMPILER_PRODUCED_OUTPUT}")
|
||||||
if(_nvcc_output_orig MATCHES "#\\\$ +PATH= *([^\n]*)\n")
|
if(_nvcc_output_orig MATCHES "#\\\$ +PATH= *([^\n]*)\n")
|
||||||
@@ -188,30 +188,33 @@ elseif(CMAKE_CUDA_COMPILER_ID STREQUAL NVIDIA)
|
|||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES )
|
# Determine CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES
|
||||||
string(REPLACE "\r" "" _nvcc_output_orig "${CMAKE_CUDA_COMPILER_PRODUCED_OUTPUT}")
|
if(CMAKE_CUDA_COMPILER_ID STREQUAL "NVIDIA")
|
||||||
if(_nvcc_output_orig MATCHES "#\\\$ +INCLUDES= *([^\n]*)\n")
|
set(CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES)
|
||||||
set(_nvcc_includes "${CMAKE_MATCH_1}")
|
string(REPLACE "\r" "" _nvcc_output_orig "${CMAKE_CUDA_COMPILER_PRODUCED_OUTPUT}")
|
||||||
string(APPEND _nvcc_log " found 'INCLUDES=' string: [${_nvcc_includes}]\n")
|
if(_nvcc_output_orig MATCHES "#\\\$ +INCLUDES= *([^\n]*)\n")
|
||||||
else()
|
set(_nvcc_includes "${CMAKE_MATCH_1}")
|
||||||
set(_nvcc_includes "")
|
string(APPEND _nvcc_log " found 'INCLUDES=' string: [${_nvcc_includes}]\n")
|
||||||
string(REPLACE "\n" "\n " _nvcc_output_log "\n${_nvcc_output_orig}")
|
else()
|
||||||
string(APPEND _nvcc_log " no 'INCLUDES=' string found in nvcc output:${_nvcc_output_log}\n")
|
set(_nvcc_includes "")
|
||||||
endif()
|
string(REPLACE "\n" "\n " _nvcc_output_log "\n${_nvcc_output_orig}")
|
||||||
if(_nvcc_includes)
|
string(APPEND _nvcc_log " no 'INCLUDES=' string found in nvcc output:${_nvcc_output_log}\n")
|
||||||
# across all operating system each include directory is prefixed with -I
|
endif()
|
||||||
separate_arguments(_nvcc_output NATIVE_COMMAND "${_nvcc_includes}")
|
if(_nvcc_includes)
|
||||||
foreach(line IN LISTS _nvcc_output)
|
# across all operating system each include directory is prefixed with -I
|
||||||
string(REGEX REPLACE "^-I" "" line "${line}")
|
separate_arguments(_nvcc_output NATIVE_COMMAND "${_nvcc_includes}")
|
||||||
get_filename_component(line "${line}" ABSOLUTE)
|
foreach(line IN LISTS _nvcc_output)
|
||||||
list(APPEND CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES "${line}")
|
string(REGEX REPLACE "^-I" "" line "${line}")
|
||||||
endforeach()
|
get_filename_component(line "${line}" ABSOLUTE)
|
||||||
|
list(APPEND CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES "${line}")
|
||||||
|
endforeach()
|
||||||
|
|
||||||
file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
|
file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
|
||||||
"Parsed CUDA nvcc include information from above output:\n${_nvcc_log}\n${log}\n\n")
|
"Parsed CUDA nvcc include information from above output:\n${_nvcc_log}\n${log}\n\n")
|
||||||
else()
|
else()
|
||||||
file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
|
file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
|
||||||
"Failed to detect CUDA nvcc include information:\n${_nvcc_log}\n\n")
|
"Failed to detect CUDA nvcc include information:\n${_nvcc_log}\n\n")
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# configure all variables set in this file
|
# configure all variables set in this file
|
||||||
|
Reference in New Issue
Block a user