基于vscode的cppcmake调试环境配置

embedded/2025/2/2 19:12:03/

1. 创建项目文件

  1. 创建cpp文件及CMakeLists.txt文件
  • helloOpenCV.cpp
#include <opencv2/opencv.hpp>
int main() {// 创建图像,初始化为黑色cv::Mat image = cv::Mat::zeros(200, 300, CV_8UC3);// 设置为纯绿色 (BGR格式:0, 255, 0)image.setTo(cv::Scalar(0, 255, 0));// 显示图像cv::imshow("Green Image", image);// 等待按键cv::waitKey(0);// 销毁所有窗口cv::destroyAllWindows();return 0;
}
  • CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
project(helloOpenCV)
set(CMAKE_BUILD_TYPE "Debug")
find_package(OpenCV REQUIRED)
add_executable(helloOpenCV helloOpenCV.cpp)
target_link_libraries(helloOpenCV ${OpenCV_LIBS})

若编译过程提示缺少opencv库则执行 sudo apt install libopencv-dev

2. 生成可执行文件

# 在项目根目录下创建build文件夹
mkdir build
cd build
# 生成构建文件makefile
cmake ..
# 基于makefile构建项目生成可执行文件 helloOpencv
make
# 调用可执行程序 弹出图像
./helloOpenCV

vscode__45">3. vscode 调试环境配置

vscode调试环境主要包括三个文件的配置

  1. c_cpp_properties.json负责指定编译器及头文件路径
  2. tasks.json负责编译生成可执行文件
  3. launch.json负责可执行文件的调试
c_cpp_properties.json

快捷键 ctrl+shift+P 后选择 c/c++ : edit configurations(JSON)生成c_cpp_properties.json
在这里插入图片描述

{"configurations": [{"name": "Linux",    "includePath": ["${workspaceFolder}/**"],"defines": [],"compilerPath": "/usr/bin/clang","cStandard": "c17","cppStandard": "c++14","intelliSenseMode": "linux-clang-x64"}],"version": 4
}

其中较重要的字段包括:

  • includePath:头文件搜索路径
  • compilerPath:指定C/C++编译器的路径
  • cppStandard:C++标准
  • intelliSenseMode:智能补全模式
tasks.json

在这里插入图片描述
点击Terminal-Configure Default Build Task 在上述CMake: ***中任意选择一项生成tasks.json即可
在这里插入图片描述

  • 方式1,通过自定义子task的顺序完成构建过程
{"version": "2.0.0","tasks": [{"label": "cmake","type": "shell","command": "cmake","args": ["../"],"options": {"cwd": "${workspaceFolder}/build"},            },{"label": "make","type": "shell","command": "make","args": [],"options": {"cwd": "${workspaceFolder}/build"}, },{"label": "cmake task","dependsOn":["cmake", "make"],"dependsOrder": "sequence"},],
}
  • 方式2,通过调用shell脚本的形式完成构建过程(我更倾向的一种方式,定义更简单)
{"version": "2.0.0","tasks": [{"label": "cmake task","type": "shell","command": "bash","args": ["${workspaceFolder}/build.sh"],"options": {"cwd": "${workspaceFolder}"},"problemMatcher": ["$gcc"],"group": {"kind": "build","isDefault": true},"detail": "Task generated by Debugger."}]
}

其中build.sh内容为

cd build
cmake ..
make
launch.json

在这里插入图片描述

点击Add configuration
在这里插入图片描述

将program改为要拉起的可执行程序,将prelaunchask设置为tasks.json中的label

{"version": "0.2.0","configurations": [{"name": "(gdb) Launch","type": "cppdbg","request": "launch","program": "${workspaceFolder}/build/helloOpenCV","args": [],"stopAtEntry": false,"cwd": "${workspaceFolder}","environment": [],"preLaunchTask": "cmake task"}]
}

其中较重要的字段包括

  • name:自定义命名运行与调式的名称,将在左侧运行和调试的菜单中显示名称
  • type:调试器类型,C/C++的调试类型为cppdbg
  • program:可执行文件路径
  • environment:添加到程序的环境变量
  • preLaunchTask:运行和调式前要启动的tasks任务,也即要启动的编译任务,任务名要和tasks.json里面的"label"值对应一致

参考

c_cpp_properties.json字段参考
launch.json字段参考
综述详细版


http://www.ppmy.cn/embedded/158982.html

相关文章

联想Y7000+RTX4060+i7+Ubuntu22.04运行DeepSeek开源多模态大模型Janus-Pro-1B+本地部署

直接上手搓了&#xff1a; conda create -n myenv python3.10 -ygit clone https://github.com/deepseek-ai/Janus.gitcd Januspip install -e .pip install webencodings beautifulsoup4 tinycss2pip install -e .[gradio]pip install pexpect>4.3python demo/app_januspr…

分布式数据库架构与实践:原理、设计与优化

&#x1f4dd;个人主页&#x1f339;&#xff1a;一ge科研小菜鸡-CSDN博客 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; 1. 引言 随着大数据和云计算的快速发展&#xff0c;传统单机数据库已难以满足大规模数据存储和高并发访问的需求。分布式数据库&…

汽车蓝牙钥匙定位仿真小程序

此需求来自于粉丝的真实需求,假期没事,牛刀小试。 一、项目背景 如今,智能车钥匙和移动端定位技术已经相当普及。为了探索蓝牙 Beacon 在短距离定位场景下的可行性,我们搭建了一个简易原型:利用 UniApp 在移动端采集蓝牙信标的 RSSI(信号强度),通过三边定位算法估算钥…

基于微信小程序的医院预约挂号系统设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…

国产编辑器EverEdit - 输出窗口

1 输出窗口 1.1 应用场景 输出窗口可以显示用户执行某些操作的结果&#xff0c;主要包括&#xff1a; 查找类&#xff1a;查找全部&#xff0c;筛选等待操作&#xff0c;可以把查找结果打印到输出窗口中&#xff1b; 程序类&#xff1a;在执行外部程序时(如&#xff1a;命令窗…

Ubuntu20.04 磁盘空间扩展教程

Ubuntu20.04 磁盘空间扩展教程_ubuntu20 gpart扩容-CSDN博客文章浏览阅读2w次&#xff0c;点赞38次&#xff0c;收藏119次。执行命令查看系统容量相关的数据&#xff1a;df -h当前容量为20G&#xff0c;已用18G&#xff08;96%&#xff09;&#xff0c;可用844M&#xff0c;可用…

设计心得——平衡和冗余

一、平衡 在前面分析了一些软件设计的基础和原则后&#xff0c;今天分析一下整体设计上的一些实践问题。首先分析一下设计上的平衡问题。平衡非常好理解&#xff0c;看到过天平或者标称的同学们应该都知道什么平衡。无论在哪个环境里&#xff0c;平衡都是稳定的基础。 既然说到…

数据结构初探:链表之双向链表篇

本文图皆为作者手绘,所有代码基于vs2022运行测试 系列文章目录 数据结构初探: 顺序表 数据结构初探:链表之单链表篇 文章目录 系列文章目录前言一.双向链表的概念二.双向链表的存储结构三.准备工作四.双向链表的增删查改的实现1.List.h2.List.c2.1双向链表的可复用的节点创建函…