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

时间:2015-04-01 01:49:22

标签: 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的尝试:

### 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

1 个答案:

答案 0 :(得分:2)

额外的-c标志是多余的,这应该有效:

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