【发布时间】:2021-08-27 22:00:19
【问题描述】:
在 Windows 上链接 CUDA 时如何强制 CMake 使用响应文件?
我一直在尝试在 Windows 上创建一个便利库 有 CUDA 的项目。目标是将几个库包装成 一。第一种方法很简单
add_library(conv
$<TARGET_OBJECTS:a>
$<TARGET_OBJECTS:b>
$<TARGET_OBJECTS:c>
)
尝试与 nvcc 链接,但超出了 windows 命令行长度限制。即,它发出
The command line is too long.
在 Darwin 或 Linux 上没有问题。
然后我在cmake-3.20.3中发现了代码,
NVIDIA-CUDA.cmake: set(CMAKE_CUDA_RESPONSE_FILE_FLAG "--options-file ")
这让我想知道我是否可以通过以下方式覆盖默认值 设置
set(CMAKE_CUDA_USE_RESPONSE_FILE_FOR_LIBRARIES TRUE)
但这样做后,我发现行为没有任何变化。它仍然与nvcc链接,它仍然不使用响应文件,并且仍然导致命令行太长。
然后我尝试将链接器设置为 Windows 链接器
set_property(TARGET conv PROPERTY LINKER_LANGUAGE CXX)
并确保拥有
-- CMAKE_CXX_USE_RESPONSE_FILE_FOR_LIBRARIES= TRUE
但是链接器仍然是 nvcc,并且没有使用响应文件。
关于如何解决这个问题的任何想法?
【问题讨论】: