cmake 链接已编译好的 *.so 库踩坑总结(二)

背景:

把自己写的源码编译成动态库供别人调用

  1. 源码部分结构目录为:
...
├── CameraPercept.cpp
├── CMakeLists.txt
├── code
│   ├── includes
│   └── src
├── depends
│   └── yaml-cpp
...

编译源码的 CMakeLists.txt :

...
set(CMAKE_MODULE_PATH ${
          
   CMAKE_MODULE_PATH} /home/wxf/3rdparty/opencv_env/opencv349/share/OpenCV)
find_package(OpenCV REQUIRED)
message(STATUS "Find OpenCV include at ${OpenCV_INCLUDE_DIRS}")
#message(STATUS "Find OpenCV libraries: ${OpenCV_LIBRARIES}")

set(MODEL_INCLUDE ./code/includes)
set(YAML_INCLUDE ./depends/yaml-cpp/include)
set(YAML_LIB_DIR ./depends/yaml-cpp/libs)

include_directories(${
          
   CUDA_INCLUDE_DIRS} 
	${
          
   TENSORRT_INCLUDE_DIR} 
	${
          
   OpenCV_INCLUDE_DIRS} 
	${
          
   MODEL_INCLUDE}
 	${
          
   YAML_INCLUDE})

aux_source_directory(./code/src MODEL_SRC)
message(STATUS "source file list: ${MODEL_SRC}")
link_directories(${
          
   YAML_LIB_DIR})

add_library(CameraPercept SHARED CameraPercept.cpp ${
          
   MODEL_SRC})
target_link_libraries(CameraPercept ${
          
   OpenCV_LIBRARIES} ${
          
   CUDA_LIBRARIES} ${
          
   TENSORRT_LIBRARY} yaml-cpp)#${
          
   YAML_LIB_DIR}
  1. 调用代码的部分目录为:
...
├── depends
│   ├── CameraPercept
│   │   ├── include
│   │   └── lib
│   └── yaml-cpp
│       ├── include
│       └── lib
├── main.cpp
...

CMakeLists.txt 为:

...
# OpenCV
find_package(OpenCV REQUIRED)
message(STATUS "Find OpenCV include at ${OpenCV_INCLUDE_DIRS}")
#message(STATUS "Find OpenCV libraries: ${OpenCV_LIBRARIES}")


set(MODEL_INCLUDE ./depends/CameraPercept/include)
set(MODEL_LIB ./depends/CameraPercept/lib)
set(YAML_INCLUDE ./depends/yaml-cpp/include)
set(YAML_LIB_DIR ./depends/yaml-cpp/lib)

include_directories(${CUDA_INCLUDE_DIRS} 
	${TENSORRT_INCLUDE_DIR} 
	${OpenCV_INCLUDE_DIRS} 
	${MODEL_INCLUDE}
 	${YAML_INCLUDE})


link_directories(${YAML_LIB_DIR} ${MODEL_LIB})

add_executable(yolov7_trt main.cpp)
target_link_libraries(yolov7_trt yaml-cpp CameraPercept ${OpenCV_LIBRARIES} ${CUDA_LIBRARIES} ${TENSORRT_LIBRARY})
经验分享 程序员 微信小程序 职场和发展