2016-01-07 31 views
0

我想用'-arch = sm_12'來編譯CUDA,但cmake/make的行爲很奇怪。使用cmake編譯cuda只能在調用兩次之後才起作用

我有以下的CMakeLists.txt:

CMAKE_MINIMUM_REQUIRED(VERSION 2.8)

PROJECT(測試)

FIND_PACKAGE(CUDA REQUIRED)

CUDA_ADD_EXECUTABLE(測試prog.cu)

SET(CUDA_NVCC_FLAGS「-arch = sm_12」)

SET(CUDA_NVCC_FLAGS $ {} CUDA_NVCC_FLAGS CACHE STRING 「倒逼」 FORCE)

但 'cmake的../src & &使' 導致對sm_20一個可執行文件。 該標誌似乎被忽略。

編輯:如果我再次調用'make'(CMakeListss.txt沒有任何修改),它使用標誌。 - 但只有當我強制標誌緩存(最後一行)

我做錯了什麼?

編輯:再次檢查後:我必須調用'make'兩次才能正常工作。有人知道這種行爲嗎?

+0

不詳細更改,您添加/不添加的標誌更改行爲。 – usr1234567

+0

不是cmake專家,但不是由cmake命令生成的CMakeLists.txt?看起來您想要爲您正在使用的機器預先設置CUDA_NVCC_FLAGS的工具鏈文件。我認爲'cmake ../src -DCUDA_NVCC_FLAGS =「 - arch = sm_12」&& make'是推薦行爲的推薦方式。 – jefflarkin

+0

@jefflarkin:不,完全沒有。 CMakeLists.txt控制CMake,可與Makefiles和make相媲美。 – usr1234567

回答

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:「

相關問題