欢迎关注我的公众号 [极智视界],回复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. 12组-Alpha冲刺-2/6

    一.基本情况 队名:字节不跳动 组长博客:https://www.cnblogs.com/147258369k/p/15535639.html 小组人数:10人 二.冲刺概况汇报 侯钦凯 过去两天完成 ...

  2. tomcat访问的重定向问题

    症状: tomcat在eclipse里面能正常启动,而在浏览器中访问http://localhost:8080/不能访问,且报404错误.同时其他项目页面也不能访问. 关闭eclipse里面的tomc ...

  3. Java安全之基于Tomcat的Filter型内存马

    Java安全之基于Tomcat的Filter型内存马 写在前面 现在来说,内存马已经是一种很常见的攻击手法了,基本红队项目中对于入口点都是选择打入内存马.而对于内存马的支持也是五花八门,甚至各大公司都 ...

  4. 保姆级神器 Maven,再也不用担心项目构建搞崩了

    今天来给大家介绍一款项目构建神器--Maven,不仅能帮我们自动化构建,还能够抽象构建过程,提供构建任务实现:它跨平台,对外提供了一致的操作接口,这一切足以使它成为优秀的.流行的构建工具,从此以后,再 ...

  5. UNCTF2020 web writeup

    1.Easy_ssrf 给了file_get_contents,直接读取flag即可 2.Easyunserialize 利用点在 构造uname反序列化逃逸即可 3.Babyeval 两个过滤,绕过 ...

  6. 【MetDNA】基于代谢反应网络的大规模代谢物结构鉴定新算法

    代谢是生命体内化学反应的总称,其所包含的代谢物变化规律可直接反映生命体的健康状态.非靶向代谢组学(untargeted metabolomics)可以在系统水平测量生命体内生理或病理状态下所有代谢物的 ...

  7. Python基础之变量与常量

    目录 1. 变量 1.1 变量的定义和组成 1.2 变量名的命名规则 1.3 变量名的两种风格 2. 常量 3. 变量内存管理 3.1 变量的存储 3.2 垃圾回收机制 3.2.1 引用计数 3.3 ...

  8. Excel-vlookup(查找值,区域范围,列序号,0)如何固定住列序列号,这样即使区域范围变动也不受影响

    突然,发现VLOOKUP的列序列号并不会随着区域范围的改变而自动调节改变,只是傻瓜的一个数,导致V错值.所有,就想实现随表格自动变化的列序号. 方法一:在列序号那里,用函数得出永远想要的那个列在区域范 ...

  9. 46.Valid Parentheses

    Valid Parentheses My Submissions QuestionEditorial Solution Total Accepted: 106346 Total Submissions ...

  10. Oracle-创建新表,创建备份表,对表中插入多条数据

    一.创建新表 0.基本语法 create table 表名称(id varchar2(50) primary key ,name char(200) not null,phone number(11) ...