CMake通过C++;nvcc的参数 我正在做一个将C++和CUDA混合的项目。此外,它还链接第三方库,特别是我们怀疑这个问题来自aws-sdk-c++
问题是,当我们链接使用AWS的库时,目标的编译选项中添加了一个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来解决这个问题,或者
-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起作用了