使用cmake编译cuda仅在调用make两次后才能工作

时间:2016-01-07 12:49:31

标签: cuda cmake makefile

我想用cmake用' -arch = sm_12'来编译CUDA,但是cmake / make表现得很奇怪。

我关注CMakeLists.txt:

  

CMAKE_MINIMUM_REQUIRED(VERSION 2.8)

     

PROJECT(测试)

     

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"强制" FORCE)

但是' cmake ../src&&让'导致sm_20的可执行文件。 国旗似乎被忽略了。

编辑:如果我打电话给#39;制作'再次(在CMakeListss.txt中没有任何修改)它使用Flag。 - 但是只有强制标志缓存(最后一行)

我做错了吗?

编辑:再次检查后:我必须致电'制作'两次正常工作。有人知道这种行为吗?

1 个答案:

答案 0 :(得分:1)

inJeans是对的:

FindCUDA-docs 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之前,可以在同一目录中多次更改这些标志中的任何一个:"