ubuntu系统vscode调试c/c++大中型项目

文章目录

    • 1. 插件
    • 2. 项目工程
    • 3. vsode的配置
      • setting.json
      • c_cpp_properties.json
    • 4. 启动调试

前置阅读
vscode调试第一篇

1. 插件

c/c++, cmake, cmake tools

2. 项目工程

对于我的项目需要用到很多的三方库,三方库的版本又会有很多,一般都是用cmake编译安装到指定的位置,最好的方式是三方库都放到一个非系统的文件夹下,后面要修改版本也和系统不冲突。这样的话就需要cmake在编译的时候find_package时指定库的搜索路径。每个开发人员的路径都不一样,所以这些路径都不会在cmakeLists里面有体现,都是在脚本里面指定。
在这里插入图片描述
代码量接近10万的项目。

例如下面的bash脚本是我的编译执行脚本:

# if [ -d "../build" ]; then
#     rm -rf ../build
# fi
mkdir -p ../buildcd ../buildcmake .. \
-DCMAKE_BUILD_TYPE=Release \
-DOpenCV_DIR="/media/xp/data/3rd_party/opencv481/lib/cmake/opencv4" \
# ..........其他的库
-DOCL_ROOT="/media/xp/data/3rd_party_lib/opencl_sdk/2024.05.08/gnu/share/cmake/OpenCL" \
-DOpenCL_INCLUDE_DIR="/media/xp/data/3rd_party_lib/opencl_sdk/2024.05.08/gnu/include" \
-DOpenCL_OpenCLUtilsCpp_LIBRARY="/media/xp/data/3rd_party_lib/opencl_sdk/2024.05.08/gnu/lib/libOpenCLUtilsCpp.so" \
-DOpenCL_OpenCLUtils_LIBRARY="/media/xp/data/3rd_party_lib/opencl_sdk/2024.05.08/gnu/lib/libOpenCLUtils.so" \
-DOpenCL_OpenCL_LIBRARY="/media/xp/data/3rd_party_lib/opencl_sdk/2024.05.08/gnu/lib/libOpenCL.so" \
-DOpenCL_INCLUDE_DIR="/media/xp/data/3rd_party_lib/opencl_sdk/2024.05.08/gnu/include" \
-DBUILD_SHARED_LIBS=ONmake -j32../build/demo/test

3. vsode的配置

在这里插入图片描述

setting.json

bash 命令中的cmake -DXXX=YYY的可以在里面添加cmake.configureSettings项,指定XXX:YYY

{"files.associations": {"cstring": "cpp","any": "cpp","array": "cpp","atomic": "cpp","bit": "cpp","*.tcc": "cpp","bitset": "cpp","cctype": "cpp","chrono": "cpp","cinttypes": "cpp","clocale": "cpp","cmath": "cpp","codecvt": "cpp","compare": "cpp","complex": "cpp","concepts": "cpp","condition_variable": "cpp","cstdarg": "cpp","cstddef": "cpp","cstdint": "cpp","cstdio": "cpp","cstdlib": "cpp","ctime": "cpp","cwchar": "cpp","cwctype": "cpp","deque": "cpp","forward_list": "cpp","list": "cpp","map": "cpp","set": "cpp","string": "cpp","unordered_map": "cpp","unordered_set": "cpp","vector": "cpp","exception": "cpp","algorithm": "cpp","functional": "cpp","iterator": "cpp","memory": "cpp","memory_resource": "cpp","numeric": "cpp","optional": "cpp","random": "cpp","ratio": "cpp","string_view": "cpp","system_error": "cpp","tuple": "cpp","type_traits": "cpp","utility": "cpp","fstream": "cpp","initializer_list": "cpp","iomanip": "cpp","iosfwd": "cpp","iostream": "cpp","istream": "cpp","limits": "cpp","mutex": "cpp","new": "cpp","numbers": "cpp","ostream": "cpp","semaphore": "cpp","span": "cpp","sstream": "cpp","stdexcept": "cpp","stop_token": "cpp","streambuf": "cpp","thread": "cpp","typeinfo": "cpp","valarray": "cpp","variant": "cpp","regex": "cpp"},"C_Cpp.errorSquiggles": "disabled","cmake.configureSettings": {"OpenCV_DIR": "/media/xp/data/3rd_party/opencv481/lib/cmake/opencv4",# 其他的三方库"OCL_ROOT": "/media/xp/data/3rd_party_lib/opencl_sdk/2024.05.08/gnu/share/cmake/OpenCL","OpenCL_INCLUDE_DIR": "/media/xp/data/3rd_party_lib/opencl_sdk/2024.05.08/gnu/include","OpenCL_OpenCLUtilsCpp_LIBRARY": "/media/xp/data/3rd_party_lib/opencl_sdk/2024.05.08/gnu/lib/libOpenCLUtilsCpp.so","OpenCL_OpenCLUtils_LIBRARY": "/media/xp/data/3rd_party_lib/opencl_sdk/2024.05.08/gnu/lib/libOpenCLUtils.so","OpenCL_OpenCL_LIBRARY": "/media/xp/data/3rd_party_lib/opencl_sdk/2024.05.08/gnu/lib/libOpenCL.so","BUILD_SHARED_LIBS": "ON","clFFT_DIR": "/media/xp/data/3rd_party_lib/clFFT/2.14.0/gnu/share/clFFT"}
}

c_cpp_properties.json

vscode调试的时候跳转三方库头文件啥的,在这里面的includePath里面配置添加;
阅读代码会有很多宏变量,可以在defines中定义;

{"configurations": [{"name": "Linux","includePath": ["${workspaceFolder}/**","${workspaceFolder}/modules/surround_view_3d/include","${workspaceFolder}/modules/casting/include","/usr/local/include/glog","${workspaceFolder}/modules","/usr/local/include/opencv4","${workspaceFolder}/modules/widget/include","${workspaceFolder}/modules/surround_view_3d/include/common","/media/xp/data/3rd_party_lib/opencl_sdk/2024.05.08/gnu/include","/media/xp/data/3rd_party_lib/opencl_sdk/2024.05.08/gnu/include/CL",],"defines": ["USE_OCL=0"],"compilerPath": "/usr/bin/gcc","cStandard": "c17","cppStandard": "gnu++17","intelliSenseMode": "linux-gcc-x64"}],"version": 4}

4. 启动调试

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/874540.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

QT写一个mainWindow

切换风格的写法&#xff1a; 先看看样式效果&#xff1a; mian_window.h文件 #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow>class MainWindow : public QMainWindow {Q_OBJECTpublic:MainWindow(QWidget *parent nullptr);~MainWindow();void Ini…

对比预测编码表示学习

对比预测编码表示学习 引言 文章主要提出如下几点&#xff1a;首先将高维数据压缩到更加紧凑的潜在嵌入&#xff08;latent embdding&#xff09;空间&#xff0c;在这个空间中条件预测更容易被建模。第二&#xff0c;在这个潜在空间中使用自回归模型&#xff0c;以对未来的多…

DC系列靶场---DC 2靶场的渗透测试(一)

信息收集 Nmap扫描 nmap -sV -p- -sC -T4 172.30.1.141 域名解析 echo 172.30.1.141 dc-2 >> /etc/hosts 目录枚举 gobuster dir -u http://172.30.1.141 -w work/lab/CTF/ATT_CK_01/SecLists-master/Discovery/Web-Content/big.txt -x .php,.rar,.html,.zip -t 20 -b…

探索XEX数字资产交易的优势与操作指南

随着数字资产市场的快速发展&#xff0c;越来越多的投资者开始关注并参与其中。XEX交易所作为一个新兴的数字资产交易平台&#xff0c;以其用户友好的界面和高效的交易服务&#xff0c;迅速吸引了大量用户。本文将介绍XEX数字资产交易的主要特点和优势&#xff0c;帮助新手更好…

物联网在电力行业的应用

作者主页: 知孤云出岫 这里写目录标题 作者主页:物联网在电力行业的应用简介主要应用领域代码案例分析1. 智能电表数据采集和分析2. 设备监控和预测性维护3. 能耗管理和优化4. 电力负载预测5. 分布式能源管理6. 电动汽车充电管理7. 电网安全与故障检测 物联网在电力行业的应用…

python+onlyoffice+vue3项目实战20240722笔记,环境搭建和前后端基础代码

开发后端 先创建data目录,然后在data目录下创建一个test.docx测试文档。 后端代码: import json import req import api from api import middleware, PlainTextResponseasync def doc_callback(request):data = await api.req.get_json(request)print("callback ==…

数据结构——堆(C语言版)

树 树的概念&#xff1a; 树&#xff08;Tree&#xff09;是一种抽象数据结构&#xff0c;它由节点&#xff08;node&#xff09;的集合组成&#xff0c;这些节点通过边相连&#xff0c;把 节点集合按照逻辑顺序抽象成图像&#xff0c;看起来就像一个倒挂着的树&#xff0c;也…

使用C#手搓Word插件

WordTools主要功能介绍 编码语言&#xff1a;C#【VSTO】 1、选择 1.1、表格 作用&#xff1a;全选文档中的表格&#xff1b; 1.2、表头 作用&#xff1a;全选文档所有表格的表头【第一行】&#xff1b; 1.3、表正文 全选文档中所有表格的除表头部分【除第一行部分】 1.…

java面向对象进阶篇--《多态》

目录 一、前言 二、认识多态 方法重写&#xff08;Override&#xff09;&#xff1a; 方法重载&#xff08;Overload&#xff09;&#xff1a; 示例&#xff1a; Person类&#xff08;父类&#xff09; Administrator&#xff08;子类&#xff09; Student&#xff08;子…

docker搭建ES 8.14 集群

参考&#xff1a;【docker搭建es8集群kibana】_docker 安装生产级 es 8.14 集群-CSDN博客 1、之前已搭建一台单机版的dockerES集群 参见 Elasticsearch docker 安装_docker 安装es8.14.3-CSDN博客 2、现在需要重新搭建为docker ES集群 准备新搭建3个点 一、准备工作 提前开…

构建网络安全之盾:应对“微软蓝屏”教训的全面策略

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

深度学习模型Transformer结构

Transformer结构是一种基于自注意力&#xff08;Self-Attention&#xff09;机制的深度学习模型&#xff0c;最初由Vaswani等人在2017年的论文《Attention Is All You Need》中提出&#xff0c;用于解决自然语言处理&#xff08;NLP&#xff09;领域的任务&#xff0c;如机器翻…

MySQL --- 库的操作

一、创建数据库 create database [ if not exists ] 数据库名; // []中的为可选项 在创建库时&#xff0c;也可以指定数据库采用的字符集(character set)和数据库字符集的校验规则(collate) (当我们创建数据库没有指定字符集和校验规则时&#xff0c;系统使用默认字符集&#x…

【复习】软件工程

软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。 典型表现&#xff1a; 开发成本和进度的估计常常很不准确 用户对已完成的软件系统不满意&#xff0c;闭门造车 软件质量&#xff08;quality&#xff09;不可靠 软件常常是不可维护的 软件产品供不应…

css技巧混合模式

看上面这个神奇的效果&#xff0c;文字在黑色背景里面显示为白色&#xff0c;而在白色的背景里面显示为黑色&#xff0c;这就是文字智能适配背景。 看到这样的需求&#xff0c;大多数人第一时间想到的是&#xff0c;文字元素有两个&#xff0c;是完全重叠的两层&#xff0c;一…

Facebook在内容创作中的新策略与机会

随着社交媒体的不断发展&#xff0c;内容创作已经成为了平台吸引和留住用户的核心竞争力。Facebook作为全球最大的社交平台之一&#xff0c;不断调整和优化其内容创作策略&#xff0c;以适应用户需求的变化和技术的进步。本文将深入探讨Facebook在内容创作中的新策略与机会&…

考研复习7月进度严重滞后?

宇哥说&#xff1a;来不及了&#xff01; 因为基础30讲和强化36讲&#xff0c;加起来已经快300小时了。 所以&#xff0c;必须换个思路&#xff1a; 不看课行吗&#xff1f; 大多数人7月的情况是这样的&#xff1a; 1. 听完线代&#xff0c;高数知识点忘得差不多了&#xf…

JMeter接口测试-3.断言及参数化测试

1. 断言 JMeter官方断言&#xff08;Assertion&#xff09;的定义 用于检查测试中得到的响应数据是否符合预期&#xff0c;用于保证测试过程中的数据交互与预期一致 断言的目的&#xff1a; 一个取样器可以添加多个不同形式的断言&#xff0c;根据你的检查需求来添加相应的…

自动驾驶系列—智能巡航辅助功能中的路口通行功能介绍

自动驾驶系列—智能巡航辅助功能中的车道中央保持功能介绍 自动驾驶系列—智能巡航辅助功能中的车道变换功能介绍 自动驾驶系列—智能巡航辅助功能中的横向避让功能介绍 自动驾驶系列—智能巡航辅助功能中的路口通行功能介绍 文章目录 2. 功能定义3. 功能原理4. 传感器架构5. 实…

Java语言程序设计基础篇_编程练习题**15.18(使用鼠标来移动一个矩形)

**15.18(使用鼠标来移动一个矩形) 请编写一个程序显示一个矩形。可以使用鼠标单击矩形内部并且拖动&#xff08;即按住鼠标移动&#xff09;矩形到鼠标的位置。鼠标点成为矩形的中央习题思路&#xff1a; 新建一个面板Pane()&#xff0c;新建一个Rectangle() 为Rectangle注册…