当前位置:   article > 正文

vscode搭建openVINO(2020.03)开发环境(cmake工程),Ubuntu18.04(中)_openvino vscode

openvino vscode

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

1 Ubuntu18.04环境

  1. l_openvino_toolkit_p_2020.3.194.tgz(最新版,截至2020.07.02)
  2. vscode(主要是可以很好的调试)
  3. cmake插件

2 安装cmake插件,两个一起吧

在这里插入图片描述

3 搭建human_pose_Demo_vscode工程(cmake)

详细的基本概念务必看,可以参考
https://blog.csdn.net/weixin_39956356/article/details/107246477

3.1 复制文件

common、human_pose_estimation_demo、thirdparty、CMakeLists.txt文件夹复制到human_pose_Demo_vscode_cmake目录下

nautilus /opt/intel/openvino/deployment_tools/open_model_zoo/demos/
  • 1

在这里插入图片描述

cd ~/Desktop/human_pose_Demo_vscode_cmake
code .
  • 1
  • 2

如果没有自动加载,手动导入也可以,如下图
在这里插入图片描述

3.2 cmake套件简析

左下角图标,如下图,红框从左到右依次为1,2,3,4
在这里插入图片描述

  1. 先点击1, 选择Debug

在这里插入图片描述

  1. . 之后点击2, 选择合适的编译套件

在这里插入图片描述
3. 之后点击3, 开始编译,编译速度非常快,几乎榨干CPU
4. 编译输出~/Desktop/human_pose_Demo_vscode_cmake/build/intel64/Debug/human_pose_estimation_demo, 下图所示
在这里插入图片描述

  1. 点击4,可以选择编译哪个模块,子模块的编译类型已经给出,你可能会想为什么有这么多目标,其实CMakeLists.txt是层级调用CMakeLists.txt,

在这里插入图片描述

  1. 最后一个是调试和运行,这里带参数调试,直接点击不可行(你可以试试怎么把参数带上)

3.3 创建launch.json,tasks.json,c_cpp_properties.json

关于如何创建这三个文件的,请参看上面的文章,其中tasks.json和编译相关,当然已经编译好了,上面的操作,所以不用创建这个文件,现在看看launch.json(调试),c_cpp_properties.json(文件的智能导航)

3.4 修改launch.json(调试)

这里还要强调下,活动文件的概念,有一个保险的做法,就是选中CMakeLists.txt再操作,就是不能选择c++文件,因为那样操作会多一个参数preLaunchTask,这个参数会调用tasks.json转去编译,也就是说,选中一个c++文件导致vscode推断你要调试c++文件,进而它会先去编译c,但是我们已经编译好了,
在这里插入图片描述
za在这里插入图片描述
在这里插入图片描述

何为调试,就是对生成的二进制程序,如果需要带上外部参数,在断点的帮助下,检查程序的正确性
这里有两个重点

  1. 二进制程序在那,即"program",改成${workspaceFolder}/build/intel64/Debug/human_pose_estimation_demo
  2. 是否带参数调试,即 "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
                }
            ]
        }
    ]
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

这么做,vscode就知道你已经编译好二进制文件,launch.json就希望把二进制的路径和外部参数告诉我。之后直接调试,不会再去编译了。
最后,也可以理解调试之前,必然会先编译,你选中一个c++文件,vscode推断你需要先编译和调试的合理性。如果不选中c++文件,vscode推断你只需要调试而已。所以由preLaunchTask控制是不是要编译文件。

注意:此时你就可以随便选中一个文件按F5,因为不需要编译。但是编译需要额外点击左下角的编译按钮。

详细参考:
https://code.visualstudio.com/Docs/editor/debugging

3.4 修改c_cpp_properties.json(文件智能感知)

你会想,上面都可以执行了,为什么还出现红色波浪号和错误,上节并没有解释,这里一起说了,因为编译链接给计算机看的,代码给人看的,进而专门设计了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
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

4 总结

  1. vscode靠后缀名识别文件,靠当前活动文件解析你的意图,靠.vscode识别主工程的位置
  2. Cmake管理很方便,但是会生成很多的中间文件,根据官方,无法跟踪生成中间文件,只有你自己慢慢删除,体积大,有些乱。
  3. 对比上一节,直接G++使用的情况,文件中没有一个多余的,
    在这里插入图片描述
    参考:
    https://code.visualstudio.com/docs/cpp/cmake-linux
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/161605
推荐阅读
相关标签
  

闽ICP备14008679号