C++ 编译CUDA C++;使用CMAKE-指定了多个编译阶段

C++ 编译CUDA C++;使用CMAKE-指定了多个编译阶段,c++,cuda,makefile,cmake,C++,Cuda,Makefile,Cmake,我正在尝试使用CMake编译一个cuda应用程序(在OSX Yosemite上)。我使用Makefile进行编译: 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的尝

我正在尝试使用CMake编译一个cuda应用程序(在OSX Yosemite上)。我使用Makefile进行编译:

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->make)编译此文件时,会抛出一个错误,其内容如下:

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

附加的
-c
标志是多余的,应该可以:

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

打印
CUDA\u NVCC\u标志的内容
。即,在设置变量后,添加
消息(状态“CUDA\u NVCC\u FLAGS${CUDA\u NVCC\u FLAGS}”)
。set命令中的分号可疑,您是从哪里复制示例的?