cmake 链接已编译好的 *.so 库踩坑总结(二)
背景:
把自己写的源码编译成动态库供别人调用
- 源码部分结构目录为:
... ├── 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}
- 调用代码的部分目录为:
... ├── 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})
