基于vscode的cppcmake调试环境配置

ops/2025/1/30 22:46:42/

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/ops/154319.html

相关文章

Nacos 2.5.0 全文详解及配置(并解决WebServerException: Unable to start mbedded Tomcat)

Nacos 2.5.0 下载&#xff1a; 已放置在博文中&#xff1a;https://download.csdn.net/download/xxiaobaibaibai/90299781 启动报错&#xff1a; 修改内容参考下方 Windows 配置 Nacos 中 第四项&#xff08;将Nacos启动修改为单机模式&#xff09;。 Nacos 概述 什么是 N…

记录 | 基于Docker Desktop的MaxKB安装

目录 前言一、MaxKBStep 1Step2 二、运行MaxKB更新时间 前言 参考文章&#xff1a;如何利用智谱全模态免费模型&#xff0c;生成大家都喜欢的图、文、视并茂的文章&#xff01; MaxKB的Github下载地址 参考视频&#xff1a;【2025最新MaxKB教程】10分钟学会一键部署本地私人专属…

一文讲解CMS收集器的垃圾收集过程

CMS就是Concurrent Mark Sweep CMS使用标记-清除算法进行垃圾收集&#xff0c;分为4大步&#xff1a; 初始标记&#xff1a;标记所有从GC Roots直接可达的对象&#xff0c;这个阶段需要STW&#xff0c;但速度很快并发标记&#xff1a;从初始标记的对象出发&#xff0c;遍历所…

网易前端开发面试题200道及参考答案 (下)

阐述如何实现 img 按照原比例最大化放置在 div 中? 要让 img 按照原比例最大化放置在 div 中,可通过以下几种方式实现: 使用 object - fit 属性 object - fit 是 CSS 中用于规定如何调整替换元素(如 <img>、<video>)的内容以适应其容器的属性。 object - fit…

用深度学习优化供应链管理:让算法成为商业决策的引擎

用深度学习优化供应链管理&#xff1a;让算法成为商业决策的引擎 引言 供应链管理一直是商业运营中至关重要的部分。从库存管理到运输调度&#xff0c;从需求预测到供应商选择&#xff0c;任何一个环节的失误都可能导致成本增加甚至业务中断。然而&#xff0c;随着数据的爆炸…

572. 另一棵树的子树

前导题&#xff1a;100. 相同的树 回顾一下 判断两棵二叉树相同&#xff0c;根结点相同 且 左子树相同 且 右子树相同。 于是判断如下&#xff1a; 根结点都为null&#xff0c;返回true根结点不都为null&#xff0c;返回false根结点都不为null&#xff0c;但是值不相同&#…

IDEA 中 Maven 依赖变灰并带斜线的解决方法及原理分析

目录 前言1. 直奔主题2. 原理分析 前言 &#x1f91f; 找工作&#xff0c;来万码优才&#xff1a;&#x1f449; #小程序://万码优才/r6rqmzDaXpYkJZF 这部分知识点比较好操作&#xff0c;对应放在运维专栏上了&#xff01; 1. 直奔主题 在使用 IntelliJ IDEA 构建 Maven 项目…

Redis存储③Redis基本命令+内部编号和架构

目录 1. Redis 命令行客户端 1.1 与 Redis 服务器交互 1.2 set 和 get 命令 2. 基本全局命令 2.1 keys 2.2 exists 2.3 del 2.4 expire 2.5 ttl 2.6 type 3. 数据结构和内部编码 4. 单线程架构 本篇完。 1. Redis 命令行客户端 1.1 与 Redis 服务器交互 根据上篇…