在做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庫