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文件。