当使用CMake 3.26.4与CUDA v12.1和Visual 16.11.25并编译.cu
文件时,我得到以下错误:
1>nvcc fatal : A single input file is required for a non-link phase when an outputfile is specified
以下是一些相关的CMake部分:
enable_language(CUDA)
add_library(${project} SHARED)
set_target_properties(${project} PROPERTIES CXX_STANDARD 17)
if (MSVC)
target_compile_definitions(${project} PUBLIC -DBOOST_ASIO_DISABLE_CONCEPTS)
target_compile_options(${project} PRIVATE /std:c++latest /await:strict /bigobj "/Zc:__cplusplus")
endif()
find_package(CUDAToolkit)
set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -arch=sm_60")
target_link_libraries(${project} PRIVATE CUDA::cuda_driver)
set_property(TARGET ${project} PROPERTY CUDA_SEPARABLE_COMPILATION ON)
看起来NVCC不喜欢从CXX编译器传递的任何/
标志。
- 已尝试:
set(CUDA_PROPAGATE_HOST_FLAGS FALSE)
。可能已弃用 - 已尝试:删除
target_compile_options
并将add_compile_options
与$<$<COMPILE_LANGUAGE:CXX>
一起使用...
有什么提示吗?谢谢!
1条答案
按热度按时间kuarbcqp1#
因此,通过移除:
并将其替换为:
这似乎解决了这个问题。