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

CMake: How to pass mode dependent compile flags to nvcc in visual studio environment

本文关键字:编译 模式 标志 nvcc 依赖于 Visual 环境 Studio CMake      更新时间:2023-10-16

我最近使用 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")

因此,当我在 Visual Studio 中指定调试或发布模式时,可以自动选择这些标志。谁能帮我一把?谢谢。

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

根据 FindCUDA 的最新 CMake 文档,您应该尝试以下三个变量:CUDA_NVCC_FLAGSCUDA_NVCC_FLAGS_DEBUGCUDA_NVCC_FLAGS_RELEASE

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

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

set(CMAKE_CUDA_FLAGS ${YOUR_FLAGS})