9

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

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

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

4

2 回答 2

23

如果要制作 .so 文件,请执行以下操作:

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

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

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

于 2015-11-30T11:42:33.420 回答
0

根据dlib/CMakeLists.txt,独立(不是来自examples)的构建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

要在示例中使用此库,您需要在beforedlib中添加库的定义。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)
...
于 2015-11-30T11:30:14.607 回答