Ubuntu中使用vscode+cmake进行编译调试

news/2024/4/24 21:36:28/

首先新建一个文件夹作为工作空间

mkdir test

进入工作空间文件夹,在vscode中打开

cd test
code .

创建一个c++文件

#include<iostream>using namespace std;int main(){int a = 2+3;int b = a+3;for(int i = 0; i<10; i++){cout<<"hello vs code & cmake..."<<endl;}return 0;
}

因为要使用cmake编译,所以要创建CMakeLists.txt,加入如下代码

cmake_minimum_required(VERSION 2.6)project(vscode_cmake)add_executable (vscode_cmake ./main.cc)

再创建build.sh文件

vim build.sh

写入以下内容

mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Debug
make

注意给build.sh文件赋予权限,否则可能无法运行

chmod +x build.sh && ./build.sh

此时,工作空间文件夹下包含三个文件,main.cc  CMakeLists.txt  build.sh

在vscode中按ctrl+shift+p,选择Configure Tasks回车,再选择Create tasks,json file from template回车,再选择others,写入如下内容

{// See https://go.microsoft.com/fwlink/?LinkId=733558// for the documentation about the tasks.json format"version": "2.0.0","tasks": [{"label": "vscode_cmake","type": "shell","command": "./build.sh","group": {"kind": "build","isDefault": true}}]
}

ctrl+shift+p,Run Build Tasks,即完成了编译,tasks.json文件就是运行了command里写的build.sh。而build.sh文件就是使用cmake进行了编译,这里注意编译的type要写debug,不要写release,否则后面打不了断点。

ctrl+shift+d, create a launch.json file,debugger选择GDB,删除默认生成的"configurations",点击右下角Add Configuration,修改“program”为cmake编译生成的executable文件的路径,注意要写绝对路径

{// 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": "/home/username/test/build/vscode_cmake","args": [],"stopAtEntry": false,"cwd": "${fileDirname}","environment": [],"externalConsole": false,"MIMode": "gdb","setupCommands": [{"description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true},{"description": "Set Disassembly Flavor to Intel","text": "-gdb-set disassembly-flavor intel","ignoreFailures": true}]}]
}

在main.cc文件夹中打上断点,就可以调试了。


http://www.ppmy.cn/news/47474.html

相关文章

《程序员面试金典(第6版)》面试题 16.01. 交换数字(位运算符,异或性质)

题目描述 编写一个函数&#xff0c;不用临时变量&#xff0c;直接交换numbers [a, b]中a与b的值。 示例&#xff1a; 输入: numbers [1,2]输出: [2,1] 提示&#xff1a; numbers.length 2-2147483647 < numbers[i] < 2147483647 解题思路与代码 这道题不让使用额外…

linux_管道学习-pipe函数-管道的读写-fpathconf函数

接上一篇&#xff1a;linux_何为IPC-进程间常用的通信方式 今天来分享linux的管道学习&#xff0c;希望我的笔记能对大家有用&#xff0c;开始上菜&#xff1a; 目录 1.管道的概念&#xff1a;2.pipe函数3.管道的读写行为4.管道缓冲区大小5.管道的优劣 1.管道的概念&#xff1…

云通讯服务商有哪些?

随着语聊、视频通话、直播等行业的兴起&#xff0c;云通讯厂商的作用越来越凸显&#xff0c;解决画面卡顿、解决声音延迟以及基于互动领域更多的行业解决方案已经成为开发者和企业所需。 从长远来看&#xff0c;随着5G的不断普及&#xff0c;低延迟、高质量的网络环境不断催生线…

kafka--python

文章目录 1、kafka是什么2、docker上部署kafka3、在kafka容器内部署python&#xff0c;并跑通生产者-消费者简单代码4、最新接口4.1、kafka_config.py4.2、kafka_interface.py4.3、run.py4、测试 1、kafka是什么 Producer&#xff1a;即生产者&#xff0c;消息的产生者&#xf…

编译和引用so库

编译和引用so库 1.两种编译方式 ndk-build Android.mk Application.mkCMake CMakeList 2.Android.mk Application.mk (1)javac java文件的绝对路径 → 生成so库 (2)javah com.xxx.xxx.tesAdd → 生成头文件 (3) 修改头文件的后缀&#xff0c;并添加实现 (4)Applicat…

git教程

Git是目前最流行的分布式版本控制系统之一&#xff0c;它可以帮助开发者更好地管理代码和协作开发。以下是Git教程的一些内容&#xff1a; Git入门&#xff1a;介绍Git的基本概念、Git工作流程和Git常用命令。 Git分支&#xff1a;讲解Git分支的用法&#xff0c;包括新建分支、…

Flutter与Android开发:构建跨平台移动应用的新选择

Flutter与Android开发&#xff1a;构建跨平台移动应用的新选择 本文内容提纲如下&#xff1a; 介绍Flutter技术&#xff1a;Flutter是一种由Google推出的开源UI工具包&#xff0c;用于构建高性能、跨平台的移动应用。文章将介绍Flutter的基本概念、特点和优势&#xff0c;包括其…

Python面向对象详解(非常详细)

非常详细的讲解&#xff08;爆肝1w字&#xff09;&#x1f44f;&#x1f3fb;&#x1f44f;&#x1f3fb;&#x1f44f;&#x1f3fb; 零基础一样学得会&#x1f44c;&#x1f3fb; 干货满满不看后悔&#x1f44d;&#x1f44d;&#x1f44d; &#x1f4dd;个人主页→数据…

可能你已经刷了很多01背包的题,但是真的对01背包领悟透彻了吗?,看我这一篇,使君对01背包的理解更进一步【代码+图解+文字描述】

一.概念理解&#xff1a;什么是01背包 关于01背包的概念理解如下&#xff1a;01背包是在M件物品取出若干件放在空间为W的背包里&#xff0c;每件物品的体积为W1&#xff0c;W2至Wn&#xff0c;与之相对应的价值为P1,P2至Pn。001背包的约束条件是给定几种物品&#xff0c;每种物…

数组篇刷题总结

二分查找&#xff1a; 给定一个 n 个元素有序的&#xff08;升序&#xff09;整型数组 nums 和一个目标值 target &#xff0c;写一个函数搜索 nums 中的 target&#xff0c;如果目标值存在返回下标&#xff0c;否则返回 -1。 示例 1: 输入: nums [-1,0,3,5,9,12], target …

win11下载配置Python环境+pycharm下载

前两天快乐的把我重装的win10升级成win11&#xff0c;升级的时候超怕不能成功&#xff0c;但效果还不错&#xff0c;然后突然想学一学Python&#xff0c;所以首先来配置环境吧 一、下载安装包 建议去官网&#xff0c;因为自从有了Python3之后&#xff0c;Python2就慢慢的被淘汰…

Difference between HTTP3 and HTTP2

HTTP3目前还在不断更新中。一般每个新版本的优化&#xff0c;都会主要针对上一个版本的缺点。 对HTTP2&#xff0c;有二进制编码、头部压缩、多路复用、服务器推送等新特性去弥补了HTTP1.1中的不足。不过HTTP2基于TCP实现的&#xff0c;带3个缺陷&#xff1a;① TCP层面的队头阻…

常见的注册中心Nacos、Eureka

常见的注册中心 1.Eureka&#xff08;原生&#xff0c;2.0遇到瓶颈&#xff0c;停止维护&#xff09; 2.Zookeeper&#xff08;支持&#xff0c;专业的独立产品。例如&#xff1a;dubbo&#xff09; 3.Consul&#xff08;原生&#xff0c;GO语言开发&#xff09; 4.Nacos …

Vue CLI 浏览器兼容性

Vue CLI 浏览器兼容性 browserslist 你会发现有 package.json 文件里的 browserslist 字段 (或一个单独的 .browserslistrc 文件)&#xff0c;指定了项目的目标浏览器的范围。这个值会被 babel/preset-env 和 Autoprefixer 用来确定需要转译的 JavaScript 特性和需要添加的 CS…

康耐视Designer,通过VC5与西门子S7-1200 PLCProfinet通讯详细

测试使用软件版本 Designer Version: 2.7 GSD: GSDML-V2.3-Cognex-VC5-20140828STEP 7 Professional V14Network Configurator Version: 3.56测试使用硬件 Cognex Vision Controller VC5CIC-5000Siemens PLC: S7-1200 CPU 1214C DC/DC/RLY1.PLC端设置 1.新建一个项目,添加对应…

WxGL应用实例:绘制高精度的3D太阳系模型

文章目录 1 坐标系的选择1.1 黄道坐标系1.2 三维空间直角坐标系 2 使用JPL星历表计算轨道2.1 日期时间2.2 特定时刻天体的位置2.3 天体运行轨道 3 太阳系模型3. 1 全家福3.2 时间、距离和半径的缩放3.3 黄道坐标系模型 天何所沓&#xff1f;十二焉分&#xff1f;日月安属&#…

做好Python工程师,首先你需要做好的几件事

做好Python工程师&#xff0c;需要做好的几件事&#xff0c;我想分享给大家。首先千万不要做事周折。在你提问之前&#xff0c;先好好想一想&#xff0c;这个问题自己能不能解决。如果能解决&#xff0c;尽量自己解决&#xff1b;如果解决不了&#xff0c;那就要把你的问题描述…

开发方案/红外线人体体温计方案

红外线人体测温仪&#xff0c;是一款非常不错的测温设备&#xff0c;他可以适用于多种场合&#xff0c;尤其是在疫情期间&#xff0c;很多场所都需要这种设备&#xff0c;不管是学校、企业、商场、小区还是机关单位&#xff0c;都需要这种设备。 红外人体测温仪测量距离可在1-5…

etcd v3使用示例

1.简单使用 1.1 增加 set 指定某个键的值。例如: $ etcdctl set /testdir/testkey "Hello world" Hello world 复制代码支持的选项包括&#xff1a; --ttl 0 该键值的超时时间(单位为秒)&#xff0c;不配置(默认为0)则永不超时 --swap-with-value value 若该键现…

ubuntu安装V2board宝塔面板教程

ubuntu安装V2board宝塔面板教程 运行环境:ubuntu-20.04 搭建宝塔web页面环境 切到linux服务器命令行 在用户目录下创建BT目录,进入BT目录 在BT目录下执行命令 sudo wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo sh install.sh…