.cpp+.cu文件的CMake文件



我是opencv和CMake的新手。我有一个.cpp文件,它将给定的映像预处理为主机和设备上的一对uchar或uint8数组。第一个数组包含原始图像值强度(在主机和设备上)。第二个数组包含在设备上执行的简单反转(255像素值),然后稍后复制到设备上。

我编写了我的CMakefile来查找cuda可执行文件和针对主cpp文件的链接。但是我遇到了一个错误,在这个错误中找不到"main"函数。错误类似于relocation 0 has invalid symbol index 11

 cmake_minimum_required(VERSION 2.8)
 project( preProcess )
 find_package( OpenCV REQUIRED )
 find_package(CUDA REQUIRED)
 include(FindCUDA)
 include_directories(/usr/local/cuda/include)
 set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} -gencode arch=compute_30,code=sm_30)
 file( GLOB  cu  *.cu)
 add_executable( preProcess preProc.cpp )
 CUDA_ADD_EXECUTABLE(test ${preProcess} ${cu})
 target_link_libraries(preProcess /usr/local/cuda/lib64/libcudart.so  ${OpenCV_LIBS} )

当我检查我的Makefile时,没有nvcc命令。如果你能指导我如何为一个同时包含cpp文件和cu文件的项目创建一个CMakeLists.txt文件,并将它们链接在一起,或者详细说明我在CMakeLists文件中做错了什么,那就太好了。

(我使用的是带有CUDA 7和opencv 2.4.11的Ubuntu 14.04)

您需要将所有文件添加到cuda_add_executable:

http://www.cmake.org/cmake/help/v3.0/module/FindCUDA.html

所有非CUDA C文件都是使用标准编译的CMAKE和cuda文件指定的构建规则使用nvcc和主机编译器编译为对象文件。

project( preProcess )
find_package( OpenCV REQUIRED )
find_package(CUDA REQUIRED)
set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} -gencode arch=compute_30,code=sm_30)
file( GLOB  cu  *.cu)
cuda_add_executable( preProcess preProc.cpp ${cu} )
target_link_libraries( preProcess ${OpenCV_LIBS} )

最新更新