背景
我在一个单独的项目中编译共享C库,需要使用CMake链接它。
我使用了一个名为darknet的基于C的神经网络实现来训练自定义对象检测器。
实际上,darknet是一个独立的C可执行文件。但我需要将探测器集成到更大的C ++代码库中。 我已经找到了一个小wrapper。 现在我想将包装器代码转换为CMake项目,将darknet编译成共享库并链接到它。
-fPIC
和-shared
将其编译为共享库。darknet
,我将其重命名为darknet.so
并将其复制到/usr/lib/
sudo ldconfig
问题:
这是我的CMakeLists.txt
。正如您所看到的,我将链接到暗网库。在编译时,出现错误,找不到库。
CMAKE_MINIMUM_REQUIRED(VERSION 3.0.0)
project(wrapper)
add_definitions(-std=c++14)
find_package(OpenCV 3.2.0 EXACT REQUIRED)
include_directories(
${OpenCV_INCLUDE_DIRS}
example
wrapper
darknet_src
)
SET(SOURCES
example/main.cpp
wrapper/darknet.cpp
wrapper/darknet.h
wrapper/darknet_detector.c
wrapper/darknet_detector.h)
add_executable(wrapper ${SOURCES})
target_link_libraries(wrapper darknet ${OpenCV_LIBS})