c++ - CMake:如何在 visual studio 环境中将模式相关的编译标志传递给 nvcc

标签 c++ visual-studio-2013 cmake cuda

我最近使用 CMake 编译我的 CUDA 代码,但不知道如何在调试或 Release模式下将不同的编译标志传递给 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")

因此,当我在 visual studio 中指定 Debug 或 Release 模式时,可以自动选择这些标志。谁能帮我解决这个问题?谢谢。

最佳答案

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

根据latest CMake document for FindCUDA在这里,您应该尝试这三个变量:CUDA_NVCC_FLAGSCUDA_NVCC_FLAGS_DEBUGCUDA_NVCC_FLAGS_RELEASE

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

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

set(CMAKE_CUDA_FLAGS ${YOUR_FLAGS})

关于c++ - CMake:如何在 visual studio 环境中将模式相关的编译标志传递给 nvcc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45761148/

相关文章:

asp.net-mvc - 无法从 NuGet 安装 Microsoft.AspNet.WebApi.Cors

c++ - target_include_directories 如何工作 cmake 如何包含本地库 <path/lib.h>

CMake find_package : where did it find the package?

c++ - 在链接静态库之前让cmake修改目标文件

c# - C++/CLI 中的 System::IntPtr 到 int*

c++ - 声明为 volatile 的 InterlockedIncrement 参数有什么影响

c++ - 什么是 "a value not associated with an object"?

c++ - 重载左移和右移运算符(cin 和 cout)

c++ - 正在解析 LNK4098 : defaultlib 'MSVCRT' conflicts with (DCMTK) and LNK2038/LNK2005

c# - 对并发队列的误解,单个消费者在自己的线程上从队列中工作