CMake通过C++;nvcc的参数 我正在做一个将C++和CUDA混合的项目。此外,它还链接第三方库,特别是我们怀疑这个问题来自aws-sdk-c++

CMake通过C++;nvcc的参数 我正在做一个将C++和CUDA混合的项目。此外,它还链接第三方库,特别是我们怀疑这个问题来自aws-sdk-c++,c++,cmake,cuda,nvcc,C++,Cmake,Cuda,Nvcc,问题是,当我们链接使用AWS的库时,目标的编译选项中添加了一个-pthread标志。我们的目标项目既有.cpp又有.cu文件,因此当nvcc编译并且标志从主机传播到设备编译时,我们得到 nvcc fatal : Unknown option 'pthread' 环顾四周,这个问题经常发生,问题是它的解决方案通常是使用一个旧的CMake,它使用CUDA\u ADD\u库,在这个库中问题不会发生,并且可以设置CUDA\u PROPAGATE\u HOST\u FLAGS=OFF来解决这个问题,或者

问题是,当我们链接使用AWS的库时,目标的编译选项中添加了一个
-pthread
标志。我们的目标项目既有
.cpp
又有
.cu
文件,因此当
nvcc
编译并且标志从主机传播到设备编译时,我们得到

nvcc fatal : Unknown option 'pthread'
环顾四周,这个问题经常发生,问题是它的解决方案通常是使用一个旧的CMake,它使用
CUDA\u ADD\u库
,在这个库中问题不会发生,并且可以设置
CUDA\u PROPAGATE\u HOST\u FLAGS=OFF
来解决这个问题,或者在生成器表达式中指定有问题的
pthread
标志,例如

add_compile_options("$<$<COMPILE_LANGUAGE:CXX>:${my_cxx_flags}>")
add_compile_options("$<$<COMPILE_LANGUAGE:CUDA>:${my_cuda_flags}>")
添加编译选项($)
添加编译选项($)
(摘自答覆) 这不是我们的选择,因为我们不包括
pthread
标志,而是通过我们链接的第三方

所以我猜我的问题是,现代的CMake有没有办法阻止主机标志传播到nvcc,或者从nvcc中删除特定标志,因为我们知道问题的原因


或任何其他解决方案,允许我们在库中使用nvcc编译CUDA文件。此链接针对
pthread

看起来CMake与CUDA 10.0混合时存在错误。 按照建议升级到CMake 3.17.3直到我升级到CUDA 10.2才解决问题,在这种情况下,CMake 3.17.3起作用了