在做OpenCV调用CUDA时,发现写好的程序不知道怎么进行编译。
用原来的CMakeLists无法编译.cu文件,后来找到一个帖子,测试可以进行CPP文件调用CUDA的编译执行。
但由于没有调用OpenCV,用在我的程序中出现部分函数为定义的情况,故对该CMakeLists进行修改后,成功运行我的OpenCV程序。
下面是我的目录结构和CMakeLists.txt文件
目录结构:
- orb-slam
– build(编译文件)
– include(头文件)
– res(测试图片)
– src(源文件)
CMakeLists.txt文件:
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
PROJECT(orb-slam)
INCLUDE(/usr/share/cmake-3.5/Modules/FindCUDA.cmake)#根据自己的安装位置替换
INCLUDE_DIRECTORIES(include)
FIND_PACKAGE(CUDA)
FIND_PACKAGE(OpenCV REQUIRED)
SET(CUDA_NVCC_FLAGS -gencode arch=compute_53,code=sm_53)#根据自己的显卡性能配置
CUDA_ADD_EXECUTABLE(main
src/main.cpp
src/ORB_GPU.cpp
src/ORB_GPU_kernel.cu
src/ORBextractor.cpp)
TARGET_LINK_LIBRARIES(main ${OpenCV_LIBS})#链接OpenCV库