为dlib创建共享库

时间:2015-11-30 10:27:05

标签: cmake shared-libraries dlib

按照使用cmake(here)编译dlib的说明生成一个静态dlib库:

cd examples
mkdir build
cd build
cmake ..
cmake --build . --config Release

如何指示cmake生成共享(.so)库?

2 个答案:

答案 0 :(得分:13)

如果你想制作一个.so文件,那就这样做:

cd dclib/dlib
mkdir build
cd build
cmake -DBUILD_SHARED_LIBS=1 ..
make
sudo make install

在unix系统上,将安装dlib系统。这意味着安装.so文件以及头文件,以便您可以使用g++ main.cpp -ldlib之类的命令编译程序。最后,在Linux系统上,您还需要在安装任何新的共享库之后运行sudo ldconfig

但是,对于大多数用户,我建议使用CMake,如示例所示。这样,您可以随时启用或禁用调试模式,还可以使源代码形式和编译形式更轻松地分发项目。例如,如果你想在Windows上编译,那么共享库绝对不是你想要的。此外,使用示例中所示的CMake将始终以简单的方式工作,无需任何设置。

答案 1 :(得分:0)

根据dlib/CMakeLists.txtexamples的独立(不是dlib)建筑物也会创建名为dlib-shared的共享库:

mkdir shared_build # Build directory can be any
cd shared_build
cmake ..
cmake --build . --config Release
make install # Install library for make it acessible for others

要在示例中使用此库,您需要在dlib 之前添加examples/CMakeLists.txt库的定义 include(../dlib/cmake)

<强>实例/的CMakeLists.txt

...
PROJECT(examples)

add_library(dlib SHARED IMPORTED) # Imported(!) dlib target
set_target_properties(dlib PROPERTIES IMPORTED_LOCATION "<full path to the installed dlib-shared library file>")

# Now it is safe to include other dlib infrustucture - it won't build dlib again.
include(../dlib/cmake)
...