FindCUDA: Handle c++11 host flag
If the host flags contain a c++11 flag (at least for gcc), then we can't automatically propagate to nvcc it using -Xcompiler. This is because nvcc can't use any C++ only flags. Instead we find this flag and add it to nvcc's flags (it has a special flag for dealing with c++11 code) and remove it from the host flags. Co-Author: Guillermo Marcus <gmarcus@nvidia.com>
This commit is contained in:
parent
486e9f4f49
commit
99abebdea0
|
@ -1184,6 +1184,19 @@ macro(CUDA_WRAP_SRCS cuda_target format generated_files)
|
|||
set(_cuda_nvcc_flags_config "${_cuda_nvcc_flags_config}\nset(CUDA_NVCC_FLAGS_${config_upper} ${CUDA_NVCC_FLAGS_${config_upper}} ;; ${CUDA_WRAP_OPTION_NVCC_FLAGS_${config_upper}})")
|
||||
endforeach()
|
||||
|
||||
# Process the C++11 flag. If the host sets the flag, we need to add it to nvcc and
|
||||
# remove it from the host. This is because -Xcompile -std=c++ will choke nvcc (it uses
|
||||
# the C preprocessor). In order to get this to work correctly, we need to use nvcc's
|
||||
# specific c++11 flag.
|
||||
if( "${_cuda_host_flags}" MATCHES "-std=c\\+\\+11")
|
||||
# Add the c++11 flag to nvcc if it isn't already present. Note that we only look at
|
||||
# the main flag instead of the configuration specific flags.
|
||||
if( NOT "${CUDA_NVCC_FLAGS}" MATCHES "-std;c\\+\\+11" )
|
||||
list(APPEND nvcc_flags --std c++11)
|
||||
endif()
|
||||
string(REGEX REPLACE "[-]+std=c\\+\\+11" "" _cuda_host_flags "${_cuda_host_flags}")
|
||||
endif()
|
||||
|
||||
# Get the list of definitions from the directory property
|
||||
get_directory_property(CUDA_NVCC_DEFINITIONS COMPILE_DEFINITIONS)
|
||||
if(CUDA_NVCC_DEFINITIONS)
|
||||
|
|
Loading…
Reference in New Issue