我想用'-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'两次才能正常工作。有人知道这种行为吗?
不详细更改,您添加/不添加的标志更改行为。 – usr1234567
不是cmake专家,但不是由cmake命令生成的CMakeLists.txt?看起来您想要为您正在使用的机器预先设置CUDA_NVCC_FLAGS的工具链文件。我认为'cmake ../src -DCUDA_NVCC_FLAGS =“ - arch = sm_12”&& make'是推荐行为的推荐方式。 – jefflarkin
@jefflarkin:不,完全没有。 CMakeLists.txt控制CMake,可与Makefiles和make相媲美。 – usr1234567