cuda - 使用 cmake 编译 cuda 仅在调用 make 两次后才有效

标签 cuda cmake makefile

我想使用 cmake 通过“-arch=sm_12”编译 CUDA,但 cmake/make 的行为很奇怪。

我有以下 CMakeLists.txt:

CMAKE_MINIMUM_REQUIRED(VERSION 2.8)

PROJECT(test)

FIND_PACKAGE(CUDA REQUIRED)

CUDA_ADD_EXECUTABLE(test prog.cu)

SET(CUDA_NVCC_FLAGS "-arch=sm_12")

SET(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} CACHE STRING "Forced" FORCE)

但是“cmake ../src && make”会生成 sm_20 的可执行文件。 该标志似乎被忽略了。

编辑:如果我再次调用“make”(在 CMakeListss.txt 中没有任何修改),它将使用该标志。 - 但前提是我强制标志缓存(最后一行)

我做错了什么吗?

编辑:再次检查后:我必须调用“make”两次才能正常工作。有人知道这种行为吗?

最佳答案

inJeans 是对的:

查找 CUDA 文档 https://cmake.org/cmake/help/v3.3/module/FindCUDA.html

这是基本信息:

“请注意,在调用 CUDA_ADD_EXECUTABLE、CUDA_ADD_LIBRARY、CUDA_COMPILE、CUDA_COMPILE_PTX、CUDA_COMPILE_FATBIN、CUDA_COMPILE_CUBIN 或 CUDA_WRAP_SRCS 之前,可以在同一目录中多次更改这些标志:”

关于cuda - 使用 cmake 编译 cuda 仅在调用 make 两次后才有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34655585/

相关文章:

gcc - cmake & gcc 每次都会编译每个文件

java - 如何使用此 makefile 以及 src/和 bin/中的文件正确生成 java jar 文件

c - 函数未定义,即使它在不同的 .h 文件中

cuda - Nsight 跳过(忽略)VS10 Cuda 中的断点工作正常,nsight 始终跳过多个断点

cuda - 在 GPU 上运行 FFTW 与使用 CUFFT

windows - 如何在 Windows 中使用 cmake 更轻松地链接 gtk 库?

linux - 编译遗迹库(适用于 msp430)

makefile - 模式规则中的通配符

cuda - openacc 与 openmp 和 mpi 的区别?

python - 如何创建Python中使用的cuda共享库