windows中使用mingw64編譯dlib的c++

網絡上都是用Visual Studio安裝的dlib, 一個visual studio 2019的安裝包就30G多, 其實用mingw-w64就能夠編譯相關程序python

安裝MingW-W64

這裏使用的msys2: https://www.msys2.org/git

安裝msys2

參照官網 好比安裝位置是 c:\msys64\github

使用國內鏡像源windows

c:\msys64\etc\pacman.d\
- mirrorlist.mingw32
- mirrorlist.mingw64
- mirrorlist.msys

這三個文件中將清華源放在第一行網絡

# the CN mirror url
 Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/i686/

安裝mingw-w64

開始菜單中 打開msys2 minGW 64-bit多線程

pacman -Syu
pacman -Su
pacman -S --needed base-devel mingw-w64-x86_64-toolchain

將mingw64的gcc加入到windows環境變量

地址在C:\msys64\mingw64\bin, 加入環境變量自行搜索ui

CUDA運行庫

在windows平臺上的mingw編譯器是不支持CUDA的,因此即便你有顯卡和CUDA它也不會安裝CUDA版本的dlib,目前windows平臺上只有visual studio是支持CUDA的。url

編譯dlib爲c庫

下載代碼 並建立相關目錄線程

cd /d d:\ 

git clone https://github.com/davisking/dlib.git

cd dlib
mkdir build
mkdir dist
cd build

建立編譯文件code

-G "MinGW Makefiles" 這個是關鍵,表示生成MinGW可用的Makefile文件
cmake -G "MinGW Makefiles" -DCMAKE_INSTALL_PREFIX=D:\dlib\dist -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCMAKE_BUILD_TYPE=Release -DCMAKE_MAKE=mingw32-make ..

不出意外, 會成功

編譯 4是你的cpu核心數

mingw32-make -j4

安裝

mingw32-make install

最終文件都會在d:\dlib\dist目錄

編譯python的wheel文件

下面方法獲得的文件無效 別試了

若是執行過上面的編譯 須要自行清理build文件夾

切換到19.20分支

最新版本的python包必須使用VS編譯
19.20是能夠編譯的, 可是在編譯時會觸發小紅傘,能夠切換到19.19
git checkout v19.20

修改源代碼

setup.py 149行

minGW是沒有'-A', 'X64'這些參數的,並且mingw的多線程編譯應該是'-j'纔對。所以將其修改以下,註釋掉'-A', 'X64',改成4線程編譯。
if platform.system() == "Windows":
            cmake_args += ['-DCMAKE_LIBRARY_OUTPUT_DIRECTORY_{}={}'.format(cfg.upper(), extdir)]
            # if sys.maxsize > 2**32:
            #     cmake_args += ['-A', 'x64']
            # # Do a parallel build
            # build_args += ['--', '/m']
            build_args += ['--', '-j4']

執行

python setup.py -G "MinGW Makefiles" bdist_wheel

python包

dist目錄下dlib-19.19.0-cp37-cp37m-win_amd64.whl (3.7MB)便是windows版本的dlib

pip install dlib-19.19.0-cp37-cp37m-win_amd64.whl

安裝face_recognition能夠直接成功

pip3 install face_recognition
相關文章
相關標籤/搜索