Following the instructions to compile dlib using cmake (here) generates a static dlib library:
cd examples
mkdir build
cd build
cmake ..
cmake --build . --config Release
How can I instruct cmake to generate a shared (.so) library instead?
Following the instructions to compile dlib using cmake (here) generates a static dlib library:
cd examples
mkdir build
cd build
cmake ..
cmake --build . --config Release
How can I instruct cmake to generate a shared (.so) library instead?
According to
dlib/CMakeLists.txt
, standalone (not fromexamples
) building ofdlib
also creates shared library nameddlib-shared
:For use this library in examples, you need to add definition of
dlib
library into yourexamples/CMakeLists.txt
beforeinclude(../dlib/cmake)
.examples/CMakeLists.txt:
If you want to make a .so file then do this:
On a unix system, that will install dlib system wide. This means installing the .so file and also the header files so you can compile programs with a command like
g++ main.cpp -ldlib
. Finally, on linux systems you will also need to runsudo ldconfig
after installing any new shared libraries.However, for most users, I would recommend using CMake as shown in the examples. That way would allow you to enable or disable debugging modes whenever you want and also makes distributing the project easier, both in source form and compiled form. For example, if you wanted to compile on windows then shared libraries are definitely not the way to go. Moreover, using CMake as shown in the examples will always work in a straightforward manner without any setup.