欢迎关注我的公众号 [极智视界],回复001获取Google编程规范

O_o>_<   o_OO_o~_~o_O

  本教程详细记录了在 win10 环境中使用 cmake 快速构建 Tengine vs 工程的方法。

   前面写过一篇《【经验分享】win10 qmake 构建 ncnn vs 工程》,介绍了在 win10 上使用 nmake 和 qmake 构建 ncnn vs 工程的方法,这里用 cmake 来走一遍 Tengine vs 工程的构建。大家知道,ncnn 和 Tengine 都是低算力场景十分受欢迎的深度学习推理框架,而 cmake 应该是开源项目中使用最多的跨平台编译工具,qmake 则小众一些。把这几篇文章结合起来,你会发现,当你左手一个 ncnn、右手一个 Tengine,左手一个 cmake、右手一个 qmake 时,不管你面对的环境是 windows 还是 linux,不管你部署的目标平台是嵌入式板子还是手机移动端,都能游刃有余。

  Come on。

1、准备 Tengine 源码

     直接 clone Tengine 的工程代码就行:

git clone https://github.com/OAID/Tengine.git

  工程项目结构清晰,像 benchmark、examples、tests 这些就不用多说了,一看就知道拿来干嘛的。说一下 tools,可以看到 tools 里提供了一些实用的工具,以前这些工具如模型转换工具 convert_tool 是单独的 git 项目,现在都揉到 Tengine 工程里来了,使用起来会更加友好一些。刚才说了 convert_tool 是模型转换工具,还有如 optimize 是模型优化工具,quantize 是模型量化工具,目前提供了四种量化算法:min-max、kl、eq、dfq,量化模式有对称量化、非对称量化、逐通道量化,覆盖的场景还是很全面的,点个赞。

2、准备 cmake bat

  先提一句,用 vs studio 2019,记住。

  整理三个 bat:

  • env.bat:用于环境配置;

  • vs_create_project.bat:创建 vs 工程;

  • run_project.bat:运行 vs 工程;

  来看一下三个 bat 的具体内容。

  env.bat:

SET WATCH_VC_DIR=C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build

   vs_create_project.bat:

@echo off

call :prepare_env
call :build_vs

goto :EOF
:prepare_env

echo "call env.bat if exist"
if exist env.bat (call env.bat)

goto :EOF

:build_vs

if defined WATCH_VC_DIR (
   echo "has WATCH_VC_DIR in env.bat"
)  else (
   echo "please set the 1 env variables: WATCH_VC_DIR in env.bat, and retry again."
  pause
   exit
)

call "%WATCH_VC_DIR%\vcvarsall.bat" x64

if exist build (echo "build folder exist.") else (md build)
cd build

cmake -G "Visual Studio 16 2019" -A x64 ..
cd ../

pause
exit

  run_project.bat:

set SLN=.\build\tengine-lite.sln

set VC_DIR=C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build
call "%VC_DIR%\vcvars64.bat" x64

set OPENCV_PATH=.\third_party\opencv\x64\vc15\bin

SET "PATH=%OPENCV_PATH%;%PATH%"

start devenv.exe %SLN%

3、构建 Tengine 工程

   把上面提到的三个 bat 放到 <Tengine_path> 目录下,由于已经做好了上面的准备工作,咱们接下来构建 Tengine 工程的过程会变得十分轻松。

  看一下其实刚拿到手的 CmakeList.txt 里有挺多模块的构建都是默认关闭的,如果你想编译某些模块,可以把对应的开关打开,就像我这里打开了 CONVERT_TOOL、QUANT_TOOL 模块一样,如下:

   然后开始愉快的编译,拨动鼠标双击就行,执行顺序:env.bat -> vs_create_project.bat -> run_project.bat,完了就自动打开了 vs2019 工程,就像这样:

   然后执行编译:

   为了证明我不是在胡说,我来跑一下 bentchmark:

   以上分享了 win10 环境下用 cmake 来构建 Tengine 工程的方法,希望我的分享能对你的学习有一点帮助。

【公众号分享】

【经验分享】win10 cmake 构建 Tengine 工程

【经验分享】win10 cmake 构建 Tengine 工程的更多相关文章

  1. 用 cmake 构建Qt工程(对比qmake进行学习)

    cmake vs qmake qmake 是为 Qt 量身打造的,使用起来非常方便 cmake 使用上不如qmake简单直接,但复杂换来的是强大的功能 内置的 out-of source 构建.(目前 ...

  2. 【原创】大叔经验分享(68)maven工程查看jar包依赖

    1 idea 结果 2 maven命令 $ mvn dependency:tree 结果 [INFO] +- org.springframework.boot:spring-boot-starter- ...

  3. 用CMake构建Qt5的Visual Studio工程

    使用Visual Studio构建Qt工程的方法有很多种,可以使用Visual Studio自带的功能手动创建配置工程,也可以创建pro文件,然后通过VS的Qt插件导入进行创建.还有一种方式是通过CM ...

  4. 好文推荐:转载一篇别人kaggle的经验分享

    转载:https://www.toutiao.com/i6435866304363627010/ 笔者参加了由Quora举办的Quora Question Pairs比赛,并且获得了前1%的成绩.这是 ...

  5. 在 linux 下使用 CMake 构建应用程序

    学习cmake http://xwz.me/wiki/doku.php?id=cmake 碰到的一些问题: 1.You have changed variables that require your ...

  6. 【干货】Kaggle 数据挖掘比赛经验分享(mark 专业的数据建模过程)

    简介 Kaggle 于 2010 年创立,专注数据科学,机器学习竞赛的举办,是全球最大的数据科学社区和数据竞赛平台.笔者从 2013 年开始,陆续参加了多场 Kaggle上面举办的比赛,相继获得了 C ...

  7. Kaggle 数据挖掘比赛经验分享(转)

     原作者:陈成龙 简介 Kaggle 于 2010 年创立,专注数据科学,机器学习竞赛的举办,是全球最大的数据科学社区和数据竞赛平台.笔者从 2013 年开始,陆续参加了多场 Kaggle上面举办的比 ...

  8. Kaggle 数据挖掘比赛经验分享

    文章发布于公号[数智物语] (ID:decision_engine),关注公号不错过每一篇干货. 来源 | 腾讯广告算法大赛 作者 | 陈成龙 Kaggle 于 2010 年创立,专注数据科学,机器学 ...

  9. thinkphp开发技巧经验分享

    thinkphp开发技巧经验分享 www.111cn.net 编辑:flyfox 来源:转载 这里我给大家总结一个朋友学习thinkphp时的一些笔记了,从变量到内置模板引擎及系统变量等等的笔记了,同 ...

随机推荐

  1. java注解@Transactional事务类内调用不生效问题及解决办法

    @Transactional 内部调用例子 在 Spring 的 AOP 代理下,只有目标方法由外部调用,目标方法才由 Spring 生成的代理对象来管理,这会造成自调用问题.若同一类中的其他没有@T ...

  2. 大一C语言学习笔记(2)---快捷键篇

    大家好,博主呢,是一位刚刚步入大一的软件工程专业的大学生,之所以写博客,是想要与同样刚刚接触程序员一行的朋友们一起讨论,进步,在这里记录我的一些学习笔记及心得,希望通过这些点点滴滴的努力,可以让我们离 ...

  3. 一个校验接口引发的思考--我真的了解Response吗

    一个校验接口 最近,我需要对接一个外部接口,基本功能是:校验指定的门店是否完善了货运信息.接口大致是这样的: POST https://******/Dealer/CheckCarrier Heads ...

  4. 大爽Python入门教程 1-3 简单的循环与判断

    大爽Python入门公开课教案 点击查看教程总目录 这里只初步认识下循环和判断,以便于我们去实现一些简单的计算. 循环和判断的详细知识和细节,我们将在后面的章节(大概是第三章)展开阐述. 1 初步了解 ...

  5. jenkins内置变量的使用

    参考链接:  https://www.cnblogs.com/puresoul/p/4828913.html 一.查看Jenkins有哪些环境变量 1.新建任意一个job 2.增加构建步骤:Execu ...

  6. cmd 命令 导出导入oracle数据库 的 表

    原地址:https://www.cnblogs.com/mysterious-killer/p/11671741.html (防止) 导出: 不要数据的:exp username/pwd@localh ...

  7. C语言通过指针数组和二维数组读取文件

    1 # include <stdio.h> 2 # include <stdlib.h> 3 # include <time.h> 4 # include < ...

  8. [loj3527]地牢游戏

    当英雄能力值$\ge 10^{7}$时,即能战胜所有敌人,简单预处理即可 若英雄能力值在$[2^{k},2^{k+1})$中,对敌人分类讨论: 1.若$s_{i}\le 2^{k}$,其必然会战胜这些 ...

  9. FFT/NTT复习笔记&多项式&生成函数学习笔记Ⅱ

    因为垃圾电脑太卡了就重开了一个... 前传:多项式Ⅰ u1s1 我预感还会有Ⅲ 多项式基础操作: 例题: 26. CF438E The Child and Binary Tree 感觉这题作为第一题还 ...

  10. Linux基础——常用命令

    find /grep /xargs /sort /uniq /tr /cut /paste /sed /awk......待续...... 1.find 名字查找: find . -name file ...