赞
踩
1 openVINO下有个demos,里面是一个总工程,如果对单个demo研究势必要从总工程拿出来,否则不好调试。这里以human_pose_estimation_demo为例,看看如何从零开始搭建openVINO工程
2 工程是Cmake的,幸运的是,vscode里面有Cmake插件,这就很方便了。
3 重要的位置已经加粗,红色字体或注意两字,请悉知
上一节,我分享了用gcc/g++方式完成。可以参考
https://blog.csdn.net/weixin_39956356/article/details/107246477
为了更好地利用工程资源,因为官方就是用Cmake写的,下面的工作几乎就是拷贝过来,再修改下,很简单。前提是你具有写Cmake的能力,这样就会事半功倍,换句话说用cmake+vscode管理大型工程,极为方便。
不用太担心,我一般写的比较详细,推荐的参考资料大部分是官方资料,这个工程的cmake写的很好,有机会可以分享下。如果你想提高cmake的能力,这就算一次机会。看官方的cmake源码
额外提供,
Makefile工程
https://blog.csdn.net/weixin_39956356/article/details/107295266
详细的基本概念务必看,可以参考
https://blog.csdn.net/weixin_39956356/article/details/107246477
将common、human_pose_estimation_demo、thirdparty、CMakeLists.txt
文件夹复制到human_pose_Demo_vscode_cmake目录下
nautilus /opt/intel/openvino/deployment_tools/open_model_zoo/demos/
cd ~/Desktop/human_pose_Demo_vscode_cmake
code .
如果没有自动加载,手动导入也可以,如下图
左下角图标,如下图,红框从左到右依次为1,2,3,4
3. 之后点击3, 开始编译,编译速度非常快,几乎榨干CPU
4. 编译输出~/Desktop/human_pose_Demo_vscode_cmake/build/intel64/Debug/human_pose_estimation_demo, 下图所示
关于如何创建这三个文件的,请参看上面的文章,其中tasks.json
和编译相关,当然已经编译好了,上面的操作,所以不用创建这个文件,现在看看launch.json(调试),c_cpp_properties.json(文件的智能导航)
这里还要强调下,活动文件的概念,有一个保险的做法,就是选中CMakeLists.txt再操作,就是不能选择c++文件,因为那样操作会多一个参数preLaunchTask
,这个参数会调用tasks.json转去编译,也就是说,选中一个c++文件导致vscode推断你要调试c++文件,进而它会先去编译c,但是我们已经编译好了,
za
何为调试,就是对生成的二进制程序,如果需要带上外部参数,在断点的帮助下,检查程序的正确性
这里有两个重点
"program"
,改成${workspaceFolder}/build/intel64/Debug/human_pose_estimation_demo
"args"
,注意格式,如下,比如,./main -m /home/wzk/intel/human-pose-estimation-0001/FP16/human-pose-estimation-0001.xml -d CPU
{ // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "(gdb) Launch", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/build/intel64/Debug/human_pose_estimation_demo", "args": ["-m", "/home/wzk/intel/human-pose-estimation-0001/FP16/human-pose-estimation-0001.xml", "-d", "CPU" ], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": false, "MIMode": "gdb", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ] } ] }
这么做,vscode就知道你已经编译好二进制文件,launch.json就希望把二进制的路径和外部参数告诉我。之后直接调试,不会再去编译了。
最后,也可以理解调试之前,必然会先编译,你选中一个c++文件,vscode推断你需要先编译和调试的合理性。如果不选中c++文件,vscode推断你只需要调试而已。所以由preLaunchTask
控制是不是要编译文件。
注意:此时你就可以随便选中一个文件按F5,因为不需要编译。但是编译需要额外点击左下角的编译按钮。
详细参考:
https://code.visualstudio.com/Docs/editor/debugging
你会想,上面都可以执行了,为什么还出现红色波浪号和错误,上节并没有解释,这里一起说了,因为编译链接给计算机看的,代码给人看的,进而专门设计了c_cpp_properties.json(文件智能感知),把导航的头文件放进去,就ok了
注意主工程位置,这时就没有错误的提示,
{ "configurations": [ { "name": "Linux", "includePath": [ "${workspaceFolder}/**", "/opt/intel/openvino/opencv/include", "/opt/intel/openvino/deployment_tools/inference_engine/include", "build/thirdparty/gflags/include", "common", "common/monitors", "human_pose_estimation_demo/include" ], "defines": [], "compilerPath": "/usr/bin/gcc", "cStandard": "gnu11", "cppStandard": "gnu++14", "intelliSenseMode": "clang-x64" } ], "version": 4 }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。