dlib编译命令非常简单,但编译中可能会遇到一些问题,以及官方命令编译出来的是静态库.a文件,因此需要分析下cmake编译命令。
常规流程
Ubuntu下通常的dlib编译方法为:
其命令可简化为:
mkdir build
cd build
cmake --build . --config Release
需要注意的是使用过程中可能出现USER_ERROR__inconsistent_build_configuration__see_dlib_faq_2
、jpeglib.h无法打开等问题,可参照VS2015+DLIB19.10配置, dlib_faq_2和dlib_faq_1问题解决,添加必要文件和命令解决。
编译so包方法
常规流程的编译指令会生成静态库.a文件,且这样的命令和一般Linux环境下cmake的编译指令有一些差异(见OpenCV的编译过程),不好在编译过程中配置属性,因此想使用-D
这种方式来编译。
首先是官方编译指令中唯一的设置项cmake --build . --config Release
,其中--build . --config Release
就是-D CMAKE_BUILD_TYPE=RELEASE
的用途,即在build阶段指定编译器类型,因此Ubuntu环境下可用如下指令进行编译:
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D BUILD_SHARED_LIBS=ON ..
其中CMAKE_INSTALL_PREFIX
指定安装路径,如果如官方文档不执行make install,可用忽略;
BUILD_SHARED_LIBS
即设置最后生成文件是否为动态库,原Makefile中应该默认设置为“NO”状态,导致最后编译文件为.a文件,设置为"ON"后即可生成.so文件。