乐趣区

关于windows:windows中使用mingw64编译dlib的cpython库

网络上都是用 Visual Studio 装置的 dlib, 一个 visual studio 2019 的安装包就 30G 多, 其实用 mingw-w64 就能够编译相干程序

装置 MingW-W64

这里应用的 msys2: https://www.msys2.org/

装置 msys2

参照官网 比方装置地位是 c:\msys64\

应用国内镜像源

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, 退出环境变量自行搜寻

CUDA 运行库

在 windows 平台上的 mingw 编译器是不反对 CUDA 的,所以即便你有显卡和 CUDA 它也不会装置 CUDA 版本的 dlib,目前 windows 平台上只有 visual studio 是反对 CUDA 的。

编译 dlib 为 c 库

下载代码 并创立相干目录

cd /d d:\ 

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

cd dlib
mkdir build
mkdir dist
cd build

创立编译文件

-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
退出移动版