简述
MNN是阿里的推理框架,号称很快,因此要编译试试。
文档地址:
https://www.yuque.com/mnn/cn
仓库地址:
https://github.com/alibaba/MNN
中文文档和英文文档有些许不同,本文按照中文文档进行编译。
编译主库
环境要求:
● Microsoft Visual Studio (>=2017)
● cmake(>=3.13)
● powershell
● Ninja (构建工具,比nmake更快)
cmake 下载地址:
https://cmake.org/
Ninja 下载地址:
https://ninja-build.org/
以上两个工具建议直接下载release编译好的文件,就是可以直接运行的文件。
正式编译
● 64位编译:在设置中找到vcvars64.bat(适用于 VS 2017 的 x64 本机工具命令提示)并单击,打开VS编译x64架构程序的虚拟环境
● 32位编译:在设置中找到vcvarsamd64_x86.bat(VS 2017的 x64_x86 交叉工具命令提示符)并单击,打开VS交叉编译x86架构程序的虚拟环境
cd /path/to/MNN
powershell # 运行该命令从cmd环境进入powershell环境,后者功能更强大
./schema/generate.ps1
# CPU, 64位编译
.\package_scripts\win\build_lib.ps1 -path MNN-CPU/lib/x64
# CPU, 32位编译
.\package_scripts\win\build_lib.ps1 -path MNN-CPU/lib/x86
# CPU+OpenCL, 64位编译
.\package_scripts\win\build_lib.ps1 -path MNN-CPU-OPENCL/lib/x64 -backends opencl
# CPU+OpenCL, 32位编译
.\package_scripts\win\build_lib.ps1 -path MNN-CPU-OPENCL/lib/x86 -backends opencl
# CPU+OpenCL+Vulkan, 64位编译
.\package_scripts\win\build_lib.ps1 -path MNN-CPU-OPENCL/lib/x64 -backends "opencl,vulkan"
# CPU+OpenCL+Vulkan, 32位编译
.\package_scripts\win\build_lib.ps1 -path MNN-CPU-OPENCL/lib/x86 -backends "opencl,vulkan"
可以成功编译主库。
编译转换工具
mkdir build
cd build
cmake -G "Ninja" -DMNN_BUILD_SHARED_LIBS=OFF -DMNN_BUILD_CONVERTER=ON -DCMAKE_BUILD_TYPE=Release -DMNN_WIN_RUNTIME_MT=ON ..
ninja
乱码出错
尝试用cmake,VS编译找原因
直接编译debugx64,出现MTd MDd不匹配情况,根据提示,将libprotobuf》属性》C++》代码生成-》运行库改为MDd
解决
出现fatal error C1060: 编译器的堆空间不足
按照MNN生成需要的库,一个个生成
编译器的堆空间不足 ,再见
继续区域换成中国,尝试ninja编译,成功。。