Mingw編譯DLib
因為機器上安裝了qt-opensource-windows-x86-mingw530-5.8.0
,所以準備使用其自帶的mingw530
來編譯DLib
使用。
因為DLib
使用CMake
的構建腳本,所以還請先安裝好CMake
。
cmake的下載地址如下https://cmake.org/files/v3.7/cmake-3.7.2-win64-x64.msi
編譯出的文件在這里https://share.weiyun.com/1e6d7dc98bc8a9fa2922f99ee11dcdac
下載Dlib源碼
可以直接去DLib
的官網http://dlib.net/找到你想要版本進行下載。
這里給出DLib-19.4
的下載鏈接http://dlib.net/files/dlib-19.4.zip
或者直接從github克隆一個
git clone https://github.com/davisking/dlib.git
生成Makefile
使用Cmake
來生成Makefile
文件。
打開開始菜單里面的Qt 5.8
下面的Qt 5.8 for Desktop (MinGW 5.3.0 32 bit)
命令行工具,然后輸入下面的命令生成Makefile
文件。
如果你不是使用的Qt
自帶的mingw
,那么也可以使用你自己下載安裝的mingw
。前提是需要先把mingw
的bin
目錄路徑添加到環境變量Path
中。可以使用set Path=%Path%;mingw的bin路徑
來臨時使用。
D:\dlib-19.4\build>cmake -DCMAKE_INSTALL_PREFIX=D:/libs/dlib -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCMAKE_BUILD_TYPE=Release -DCMAKE_MAKE=mingw32-make ..
實際上上面的命令還有些不對,請看后面的說明。
使用上面命令之后出現了如下錯誤輸出
-- The C compiler identification is GNU 5.3.0
-- The CXX compiler identification is GNU 5.3.0
-- Check for working C compiler: C:/Qt/Qt5.8.0/Tools/mingw530_32/bin/gcc.exe
CMake Error: Generator: execution of make failed. Make command was: "nmake" "/NOLOGO" "cmTC_faf78\fast"
-- Check for working C compiler: C:/Qt/Qt5.8.0/Tools/mingw530_32/bin/gcc.exe -- broken
CMake Error at C:/Program Files/CMake/share/cmake-3.7/Modules/CMakeTestCCompiler.cmake:51 (message):The C compiler "C:/Qt/Qt5.8.0/Tools/mingw530_32/bin/gcc.exe" is not able tocompile a simple test program.
看輸出是其去創建了nmake
的構建腳本,這不是預期的。
于是添加了-G "MinGW Makefiles"
選項之后重新生成,命令如下
cmake -DCMAKE_INSTALL_PREFIX=D:/libs/dlib -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCMAKE_BUILD_TYPE=Release -G"MinGW Makefiles" ..
又出現下面的錯誤了
CMake Error: Error: generator : MinGW Makefiles
Does not match the generator used previously: NMake Makefiles
Either remove the CMakeCache.txt file and CMakeFiles directory or choose a different binary directory.
這里說不能匹配以前生成使用的NMake Makefiles
。這是因為cmake
命令執行的時候具有緩存cache
的原因,解決的辦法可以是刪除它。
刪除掉build
目錄下的所有文件后重新運行下面命令
cmake -DCMAKE_INSTALL_PREFIX=D:/libs/dlib -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCMAKE_BUILD_TYPE=Release -G"MinGW Makefiles" ..
生成Makefile
成功后輸出
-- Configuring done
-- Generating done
-- Build files have been written to: D:/development_library/dlib/dlib-19.4/build
在生成的時候還提示了沒有發現CUDA
和cuDNN
。因為我這里不需要就不做了,有需要的人可以自己下載安裝(需要顯卡支持)后,重新運行cmake
命令。
編譯
生成Makefile
后,使用下面命令進行編譯
mingw32-make -f Makefile # 編譯
mingw32-make -f Makefile install # 安裝
安裝之后可以到-DCMAKE_INSTALL_PREFIX=D:/libs/dlib
指定的目錄中找到對應的頭文件和庫文件。