2015-04-01 202 views
2

我正在尝试使用CMake编译cuda应用程序(在OSX Yosemite上)。我有一个汇编工作与一个Makefile:使用CMAKE编译CUDA C++ - 指定了多个编译阶段

CXX = nvcc 
CXX_FLAGS = -c -O3 -arch=sm_21 
CXX_LIBS = 
BIN = md5_gpu.o 

main: 
    $(CXX) $(CXX_FLAGS) md5_gpu.cu -o $(BIN) $(CXX_LIBS) 

这个makefile工作,我试图将它移植到CMake。这是我在制作的CMakeLists.txt该项目尝试:

### CMakeLists.txt for CUDA 

cmake_minimum_required(VERSION 2.8) 
find_package(CUDA QUIET REQUIRED) 

# Pass options to NVCC 
set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS};-c -O3 -arch=sm_21) 

cuda_compile(md5 md5_gpu.cu) 

cuda_add_executable(md5Build ${md5}) 

然而,当我试图通过CMake编译这个(CMake的 - >作)抛出一个错误,上面写着:

nvcc fatal : More than one compilation phase specified 
CMake Error at cuda_compile_generated_md5_gpu.cu.o.cmake:206 
+0

打印CUDA_NVCC_FLAGS'的'内容。也就是说,在设置变量后,添加'message(STATUS“CUDA_NVCC_FLAGS $ {CUDA_NVCC_FLAGS}”)''。 set命令中的分号是可疑的,你从哪里复制你的例子? – Antonio 2015-04-01 12:28:41

回答

2

附加-c标志是多余的,这应该工作:

find_package(CUDA) 
list(APPEND CUDA_NVCC_FLAGS "-arch=sm_21;-O3") 
cuda_add_executable(md5Build md5_gpu.cu)