我想用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。 - 但是只有强制标志缓存(最后一行)我做错了吗?
编辑:再次检查后:我必须致电'制作'两次正常工作。有人知道这种行为吗?
答案 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之前,可以在同一目录中多次更改这些标志中的任何一个:"