CMake:如何在 Visual Studio 环境中将依赖于模式的编译标志传递给 nvcc

Eri*_*ric 4 c++ cuda cmake visual-studio-2013

我最近使用 CMake 编译我的 CUDA 代码,但不知道如何在调试或发布模式下将不同的编译标志传递给 nvcc。我希望我可以指定如下内容,

set(CUDA_GENE_FLAGS_DEBUG "-gencode arch=compute_35,code=sm_35 -gencode arch=compute_37,code=sm_37")
set(CUDA_GENE_FLAGS_RELEASE "-Xptxas -O3 -gencode arch=compute_35,code=sm_35 -gencode arch=compute_37,code=sm_37")
Run Code Online (Sandbox Code Playgroud)

因此,当我在 Visual Studio 中指定 Debug 或 Release 模式时,可以自动选择这些标志。任何人都可以帮我解决这个问题吗?谢谢。

Chr*_*phe 5

我在为 CUDA 程序编译链接 OpenMP 时遇到了同样的问题。

根据此处FindCUDA最新 CMake 文档,您应该尝试这三个变量:CUDA_NVCC_FLAGS,CUDA_NVCC_FLAGS_DEBUGCUDA_NVCC_FLAGS_RELEASE.

但它对我不起作用,然后我找到了另一个参考

如果以上变量都不起作用,请尝试使用CMAKE_CUDA_FLAGS如下解决方法:

set(CMAKE_CUDA_FLAGS ${YOUR_FLAGS})
Run Code Online (Sandbox Code Playgroud)