linux环境安装
sudo apt install cmake 安装cmake
cmake --version 查看是否安装成功
cmake编写
基本流程
cmake_minimum_required(VERSION 3.0)
PROJECT(my_proj)
#定义路径变量
set(OpenCV_INCLUDE_DIRS /usr/local/include/opencv4/opencv2/)
set(OpenCV_LIBS
/usr/local/lib/libopencv_core.so
/usr/local/lib/libopencv_highgui.so
/usr/local/lib/libopencv_imgcodecs.so
/usr/local/lib/libopencv_imgproc.so
)
# 包含目录
include_directories(
${OpenCV_INCLUDE_DIRS}
${CMAKE_SOURCE_DIR}/include
)
# 库目录
#看看路径
message(STATUS ${OpenCV_LIBS})
# add_executable(可执行文件名称 文件) 添加生成的可执行文件
add_executable(test_cmake_exe RDPPmain.cpp src/inference.cpp src/utils.cpp)
# target_link_libraries(库文件名称/可执行文件名称 链接的库文件名称)
target_link_libraries(test_cmake_exe ${OpenCV_LIBS})
# find_package(OpenCV REQUIRED)
# if (OpenCV_FOUND)
# message(STATUS "OpenCV_LIBS: ${OpenCV_LIBS}")
# message(STATUS "OpenCV_INCLUDE_DIRS: ${OpenCV_INCLUDE_DIRS}")
# else ()
# message(FATAL_ERROR "opencv Not Found!")
# endif (OpenCV_FOUND)
这边主要是需要安装三个依赖:opencv onnxruntime libtorch
安装不难,但是编写cmake还是有一点坑
opencv
配置opencv
set(OpenCV_INCLUDE_DIRS /usr/local/include/opencv4/opencv2/)
set(OpenCV_LIBS
/usr/local/lib/libopencv_core.so
/usr/local/lib/libopencv_highgui.so
/usr/local/lib/libopencv_imgcodecs.so
/usr/local/lib/libopencv_imgproc.so
)
include_directories(
${OpenCV_INCLUDE_DIRS}
)
find_package(OpenCV REQUIRED)
target_link_libraries(RDPP_cmake_exe ${OpenCV_LIBS})
libtorch
find_package(Torch REQUIRED PATHS "/home/z50035455/cppdependence/libtorch/share/cmake/Torch/")
include_directories(
${LIBTORCH_INCLUDE_DIRS}
)
find_package(Torch REQUIRED)
target_link_libraries(RDPP_cmake_exe ${TORCH_LIBRARIES})
onnxruntime
set(ONNXRUNTIME_INCLUDE_DIRS /home/z50035455/cppdependence/onnxruntime-linux-x64-1.15.1/include)
set(ONNXRUNTIME_LIBS /home/z50035455/cppdependence/onnxruntime-linux-x64-1.15.1/lib)
link_directories(ONNXRUNTIME_LIBS)
link_libraries(onnxruntime)
可以看到这里面onnxruntime和其他的安装不太一样,应该是动态和静态链接库的区别,target_link_libraries用了链接动态库,link_libraries链接静态库,且顺序是:链接静态库-add_executable-链接动态库
最终cmake文件
cmake_minimum_required(VERSION 3.5)
PROJECT(my_proj)
# 配置torch
find_package(Torch REQUIRED PATHS "/home/z50035455/cppdependence/libtorch/share/cmake/Torch/")
# 配置onnxruntime
set(ONNXRUNTIME_INCLUDE_DIRS /home/z50035455/cppdependence/onnxruntime-linux-x64-gpu-1.9.0/include)
set(ONNXRUNTIME_LIBS /home/z50035455/cppdependence/onnxruntime-linux-x64-gpu-1.9.0/lib)
link_directories(ONNXRUNTIME_LIBS)
link_libraries(onnxruntime)
# 配置opencv
set(OpenCV_INCLUDE_DIRS /usr/local/include/opencv4/opencv2/)
set(OpenCV_LIBS
/usr/local/lib/libopencv_core.so
/usr/local/lib/libopencv_highgui.so
/usr/local/lib/libopencv_imgcodecs.so
/usr/local/lib/libopencv_imgproc.so
)
# 包含目录
include_directories(
${OpenCV_INCLUDE_DIRS}
${ONNXRUNTIME_INCLUDE_DIRS}
${LIBTORCH_INCLUDE_DIRS}
${CMAKE_SOURCE_DIR}/include
)
find_package(OpenCV REQUIRED)
find_package(Torch REQUIRED)
# 库目录
# add_library(
# # ${LIBTORCH_LIBS}
# ${ONNXRUNTIME_LIBS}
# )
# 添加源文件路径下所有源文件存放到变量中(*.c && *.cpp)
# SET(SOURCE_PATH ${PROJECT_SOURCE_DIR}/src)
# AUX_SOURCE_DIRECTORY(${SOURCE_PATH} SRC_LIST)
# add_executable(可执行文件名称 文件)
add_executable(RDPP_cmake_exe src/RDPPmain.cpp src/inference.cpp src/utils.cpp)
# target_link_libraries(库文件名称/可执行文件名称 链接的库文件名称)
target_link_libraries(RDPP_cmake_exe ${TORCH_LIBRARIES})
target_link_libraries(RDPP_cmake_exe ${OpenCV_LIBS})
使用:
// 进入build路径
$ cmake ..
$ make
$ ./exe_name