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.rhkb.cn/news/381391.html

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

相关文章

项目笔记| 基于Arduino和IR2101的无刷直流电机控制器

本文介绍如何使用 Arduino UNO 板构建无传感器无刷直流 (BLDC) 电机控制器或简单的 ESC(电子速度控制器)。 无刷直流电机有两种类型:有传感器和无传感器。有感无刷直流电机内置3个霍尔效应传感器,这些传感…

MLIR的TOY教程学习笔记

MLIR TOY Language 文章目录 MLIR TOY Language如何编译该项目ch1: MLIR 前端IR解析ch2: 定义方言和算子 (ODS)1. 定义方言2. 定义OP3. OP相关操作4. 定义OP ODS (Operation Definition Specification)1. 基本定义2. 添加文档3. 验证OP4. 新增构造函数5. 定义打印OP的格式 ch3:…

降雨量预测 | Matlab基于ARIMA-RBF降雨量预测

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 降雨量预测 | Matlab基于ARIMA-RBF降雨量预测 注:程序和数据放在一个文件夹。 程序语言为matlab,程序可出预测效果图,指标图; 代码特点:参数化编程、参数可方便更改、代…

浅聊 Three.js 屏幕空间反射SSR-SSRShader

浅聊 Three.js 屏幕空间反射SSR(2)-SSRShader 前置基础 渲染管线中的相机和屏幕示意图 -Z (相机朝向的方向)||| -------------- <- 屏幕/投影平面| | || | || | (f) | <- 焦距| | ||…

前端vue框架的项目文件创建及常见Vue指令运用

前言 本文介绍前端Vue框架&#xff0c;先从npm工具创建的Vue项目开始&#xff0c;对项目结构的一些文件用途进行说明&#xff0c;随后对Vue文件编写所用的两种风格&#xff08;选项式API和组合式API风格&#xff09;做了区分&#xff0c;同时对编写代码中常见的生命周期钩子函…

Pytorch使用前期准备

一、检查英伟达驱动和CUDA Toolkit是否正确安装 1.任务管理器性能选项卡中能正确显示显卡型号则表示显卡驱动正确安装 2. CUDA Toolkit会跟随pytorch自动安装 二、虚拟环境的准备 Miniconda — Anaconda documentationhttps://docs.anaconda.com/miniconda/ 1.安装anaconda或者…

腾讯元宝上线“3D角色梦工厂”:快速生成专属3D角色!

7月16日&#xff0c;腾讯旗下大模型应用“腾讯元宝”上线“3D角色梦工厂”&#xff0c;允许用户通过上传一张五官清晰的正面头像&#xff0c;并选择不同的角色模板&#xff0c;迅速生成个人3D角色&#xff01; 技术特点 “3D角色梦工厂”将大模型生成技术与3D应用相结合&#…

大模型(LLM)选择指南:AI解决方案的12个决策点

今天我们来看看国外各家领先的大型语言模型&#xff08;LLM&#xff09;&#xff0c;这些模型来自OpenAI、Google、Anthropic、Cohere、Meta、Mistral AI以及Databricks等不同的供应商。我们会根据几个关键因素来评估这些模型&#xff0c;包括性能&#xff08;涵盖价格、质量和…

NET 语言识别,语音控制操作、语音播报

System.Speech. 》》System.Speech.Synthesis; 语音播报 》》System.Speech.Recognition 语音识别 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Speech.Recog…

在 Windows 上运行 Linux:WSL2 完整指南(二)

系列文章目录 在 Windows 上运行 Linux&#xff1a;WSL2 完整指南&#xff08;一&#xff09;&#x1f6aa; 在 Windows 上运行 Linux&#xff1a;WSL2 完整指南&#xff08;二&#xff09;&#x1f6aa; 文章目录 系列文章目录前言四、常见问题及解决方法问题二&#xff1a;0…

昇思25天学习打卡营第17天|LLM-基于MindSpore的GPT2文本摘要

打卡 目录 打卡 环境准备 准备阶段 数据加载与预处理 BertTokenizer 部分输出 模型构建 gpt2模型结构输出 训练流程 部分输出 部分输出2&#xff08;减少训练数据&#xff09; 推理流程 环境准备 pip install -i https://pypi.mirrors.ustc.edu.cn/simple mindspo…

AV1技术学习:Affine Motion Compensation

一、Affine Model Parameter 除了传统的平移运动补偿&#xff0c;AV1 还支持仿射变换模型&#xff0c;将当前像素点 (x, y) 通过以下方式投影到参考帧中的预测像素点 (x, y). 参数 (h13, h23) 对应于平移模型中使用的常规运动向量。 参数 h11 和 h22 控制垂直和水平轴上的比例…

Spring后端框架复习总结

之前写的博客太杂,最近想把后端框架的知识点再系统的过一遍,主要是Spring Boot和Mybatis相关,带着自己的理解使用简短的话把一些问题总结一下,尤其是开发中和面试中的高频问题,基础知识点可以参考之前写java后端专栏,这篇不再赘述。 目录 Spring什么是AOP?底层原理?事务…

【HarmonyOS NEXT】网络请求 - 分页加载

分页加载关键字&#xff1a;onReachEnd 一、申请网络权限 在 module.json5 文件中&#xff0c;添加网络权限&#xff1a; {"module": {..."requestPermissions": [{"name": "ohos.permission.INTERNET","usedScene": {&qu…

K8S实战进阶

title ‘K8S实战进阶’ date 2024-04-02T16:57:3608:00 draft true 一、搭建Kubernetes集群 1.1 搭建方案 1.1.1 minikube minikube 是一个工具&#xff0c; 能让你在本地运行 Kubernetes。 minikube 在你的个人计算机&#xff08;包括 Windows、macOS 和 Linux PC&…

图像生成(Text-to-Image)发展脉络

这篇博客对 图像生成&#xff08;image generation&#xff09; 领域的经典工作发展进行了梳理&#xff0c;包括重要的一些改进&#xff0c;目的是帮助读者对此领域有一个整体的发展方向把握&#xff0c;并非是对每个工作的详细介绍。 脉络发展&#xff08;时间顺序&#xff0…

WGS84经纬度坐标 GCJ02火星坐标 BD09百度坐标互相转换

WGS84经纬度坐标 GCJ02火星坐标 BD09百度坐标互相转换 背景&#xff1a;uniapp做的微信小程序&#xff0c;使用到了相机拍照并获取位置坐标信息&#xff1b;在腾讯地图上展示坐标点位置信息&#xff1b; 由于业务需要我们的PC端用的不是腾讯地图&#xff0c;需要使用WGS84坐标或…

uniapp判断h5/微信小程序/app端+实战展示

文章目录 导文使用条件编译的基本语法常见的平台标识符示例实战展示使用场景举例注意事项 导文 这里是导文 当你在开发Uni-app时&#xff0c;需要根据不同的平台&#xff08;比如App端、H5端、微信小程序等&#xff09;来执行不同的代码逻辑&#xff0c;可以使用条件编译来实现…

03 Git的基本使用

第3章&#xff1a;Git的基本使用 一、创建版本仓库 一&#xff09;TortoiseGit ​ 选择项目地址&#xff0c;右键&#xff0c;创建版本库 ​ 初始化git init版本库 ​ 查看是否生成.git文件&#xff08;隐藏文件&#xff09; 二&#xff09;Git ​ 选择项目地址&#xff0c…

Redis分布式系统中的主从复制

本篇文章主要对Redis的主从复制进行讲解。主要分析复制的原理&#xff0c;包括:建立复制、全量复制、部分复制、全量复制、心跳检测等。希望本篇文章会对你有所帮助。 文章目录 一、主从复制简介 二、配置主从复制模式 断开主从复制 安全性 只读 传输延迟 三、拓扑结构 四、主…