vscode ubuntu c++运行环境配置

        官方教程地址:Get Started with C++ on Linux in Visual Studio Code(Get Started with C++ on Linux in Visual Studio Code)

1、下载安装vscode

Visual Studio Code - Code Editing. Redefined(Visual Studio Code - Code Editing. Redefined)。

2、安装C++扩展

3、安装gdb

apt-get install gdb

如果不安装gdb运行可能会报错“unable to start debugging. the value of miDebuggerPath is invalid.md”。

4、示例程序

        helloworld示例程序如下,保存为test.cpp。

#include <iostream>
using namespace std;int main()
{cout << "Hello World!" << endl;return 0;
}

5、运行程序

5.1 task模式

        按下F5或点击左侧Run&Debug,点击create a launch.json File,弹窗中选择第一个即可运行程序,输出结果同时,工程文件夹下多出一个.vscode文件夹,包含launch.json, tasks.json, c_cpp_properties.json。

        (1)launch.json

        launch.json文件主要用来设置如何调试。
        直接点击左侧边栏的Run and Debug图标(Ctrl+Shirft+D),点击create a launch.json file,选择C++(GDB/LLDB),选择Default Configuration,就能自动生成launch.json文件。
        一般地只需要改"program":部分内容改为项目路径下生成的执行文件即可。
        如果需要调试前重新编译一遍,可以新增一条"preLaunchTask",里面的内容改为tasks.json中的'label'名称。

{// 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": "${workspaceFolder}/bin/hello_world", //只改这里"args": [],"stopAtEntry": false,"cwd": "${workspaceFolder}","environment": [],"externalConsole": false,"MIMode": "gdb","setupCommands": [{"description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true}],"preLaunchTask": "task1" //可以新增一条}]
}

        (2)tasks.json

        tasks.json文件相当于vscode的.sh或.bat文件,用来记录一系列操作的宏,可以用来设置如何编译文件,如何运行文件,几乎.sh能干的都可以干。

        下面增加了一个build.sh脚本来删除和创建build文件夹,build.sh内容如下所示:

#!/bin/bash
if [ ! -d "bin" ]; thenmkdir bin
fi
g++ main.cc -g -o ./bin/hello_world  #默认为release模式,-g表示debud模式,如果编译c程序,g++改成gcc

        按ctrl + shift + p打开vscode控制台,输入Tasks: Configure Task,再选择Create tasks.json file from templates,选择Others模板,就自动生成了一个tasks.json文件,这样你就可以在该文件中编写参数来调整设置。

{// See https://go.microsoft.com/fwlink/?LinkId=733558// for the documentation about the tasks.json format"version": "2.0.0","tasks": [{"label": "task1", //你的设置文件名,可随便起"type": "shell", //运行task的平台,一般是shell"command": "bash ./build.sh", //普通的shell命令"args": [],"group": {"kind": "build", //设置为build组,这样当你在vscode中执行build命令时,//就能自动执行"command"中的命令了"isDefault": true}}]
}

        (3)c_cpp_properties.json

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

        整个过程描述:
        按F5 => 运行launch.json => 由于设置"preLaunchTask": "task1",先去运行tasks.json中的task1中的command => 运行build.sh => 调用g++将main.cc编译成可执行文件hello_world => 开始调试launch.json中program所指的可执行文件hello_world

5.2 cmake模式

        (1)cmake安装


(1)安装编译所需的依赖包:
sudo apt update
sudo apt install build-essential libssl-dev
(2)下载CMake的源代码。访问[CMake官网](https://cmake.org/files/)下载指定版本的源码压缩包。
wget https://cmake.org/files/v3.20/cmake-3.20.0.tar.gz
(3)解压源代码包,并进入解压后的目录
tar -zxvf cmake-3.20.0.tar.gz
cd cmake-3.20.0
(4)编译和安装:
./configure
make
sudo make install
(5)验证安装
cmake --version

        (2)build.sh和CMakeLists.txt

        工程目录下新建build.sh和CMakeLists.txt。
        build.sh内容如下。

cmake_minimum_required(VERSION 3.20)
project(hello_world)set(CMAKE_BUILD_TYPE "Debug") # 默认是Release模式,设置为Debug才能调试
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin) # 设置可执行文件的输出目录add_executable(hello_world test.cpp)

        CMakeLists.txt内容如下。

#!/bin/bash
if [ ! -d "build" ]; thenmkdir build
elserm -rf build/*
fi
cd build
Local_Dir=$(cd "$(dirname "$0")"; pwd)
echo "Now work at Dir:$Local_Dir"
cmake ..
make

        整个过程描述:
        按F5 => 运行launch.json => 由于设置"preLaunchTask": "task1",先去运行tasks.json中的task1中的command => 运行build.sh => 调用cmake并根据CMakeLists.txt文件编译出可执行文件hello_world => 开始调试launch.json中program所指的可执行文件hello_world。

5.3 CMake Tools

        安装插件CMake Tools。

        安装完成之后,直接点击下方build和运行按钮即可。安装完成之后可能需要重启vscode。

6、参考资料

[1] https://blog.csdn.net/weixin_43180456/article/details/129847004

[2] https://www.zhihu.com/question/30315894

[3] https://blog.csdn.net/A_L_A_N/article/details/104548022

【版权声明】
本文为博主原创文章,未经博主允许严禁转载,我们会定期进行侵权检索。  

更多python与C++技巧、三维算法、深度学习算法总结、大模型请关注我的博客,欢迎讨论与交流:https://blog.csdn.net/suiyingy,或”乐乐感知学堂“公众号。Python三维领域专业书籍推荐:《人工智能点云处理及深度学习算法》。

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

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

相关文章

气膜建筑是由什么材料制成的?PVDF膜材的革新应用值得期待吗?

随着科技的不断进步和发展&#xff0c;建筑行业也在不断涌现新型的建筑材料。气膜建筑作为其中一种创新的建筑膜材&#xff0c;在体育馆、运动场馆、展览厅等场所得到了广泛的应用。那么&#xff0c;究竟是什么材料构成了气膜建筑呢&#xff1f;轻空间小编将为您详细介绍。 气膜…

Win11系统启动VMware上虚拟机蓝屏解决办法

背景 最近有在做一个项目的过程中需要使用虚拟机&#xff0c;用原来装好的的Vmware14打开虚拟机&#xff0c;直接蓝屏了&#xff0c;尝试了如下几种方法来解决&#xff0c;最好用的就是第二种&#xff0c;直接下载最新版本(在软件管家中直接下载)。 虚拟机 目前常用的虚拟机软…

Docker 中 MySQL 的部署与管理

目录 一、Docker 中部署 MySQL1.1 部署 MySQL1.2 进入容器并创建数据库1.3 Navicat 可视化工具连接 二、可能存在的问题2.1 1130 - Host ‘172.17.0.1‘ is not allowed to connect to this MySQL server 参考资料 一、Docker 中部署 MySQL 1.1 部署 MySQL 首先&#xff0c;从…

[WiFi] 802.11w/802.11k/802.11v/802.11r/802.11u/802.11ai/802.11ah简介

802.11w&#xff08;PFM&#xff09; Protected Management Frames,802.11w协议主要基于现有的对数据报文的加密形式&#xff0c;对管理帧进行类似的加密。802.11w需要加密的管理帧包括解关联帧、去认证帧及强壮Action帧。 802.11k&#xff08;RRM&#xff09; Radio Resource …

一个简单的微信小程序表单提交样式模板

没什么东西&#xff0c;只是方便自己直接复制使用 .wxml <view class"box"><form bindsubmit"formSubmit"><view class"form-item"><text class"head">姓名&#xff1a;</text><input class"…

python数据类型 -- 集合Set

你好, 我是木木, 目前正在做两件事   1. 沉淀自己的专业知识   2. 探索了解各种副业项目&#xff0c;同时将探索过程进行分享&#xff0c;帮助自己以及更多朋友找到副业, 做好副业 文末有惊喜 在Python中&#xff0c;集合&#xff08;Set&#xff09;是一种无序、不重复元素的…

【Linux】Centos7上安装MySQL5.7

目录 1.下载安装包2. 上传安装包3.将 mysql 解压到/usr/local/4.重命名5.创建mysql用户及用户组6. 进入 mysql 目录修改权限7. 安装依赖库8. 执行安装脚本9. 复制启动脚本到资源目录10. 拷贝 my.cnf&#xff0c;并赋予权限11. 配置环境变量12. 启动 mysqld13. 登录 MySQL&#…

3.13练习题解

1.空调&#xff1a; 这道题目我们不妨直接考虑&#xff08;应该也很容易想到是差分&#xff0c;因为题目中给出的空调的功能已经有提示了&#xff09;&#xff0c;那么我们不妨对问题进行一下转化&#xff1a; 首先将当前温度和目标温度都确定下来&#xff0c;也就是&#xff…

1361:产生数(Produce)

【解题思路】 1、将数字拆分保存在数组中&#xff0c;而后转换每一位。 2、将数字变化规则保存在x、y两个一维数组中&#xff0c;x[i]到y[i]是一种转换规则。 3、从n的初始值开始搜索&#xff0c;对n做数字拆分&#xff0c;将拆分后的各位数字保存在一个数组中。针对数组中的每…

初识进程状态

&#x1f30e;进程状态【上】 文章目录&#xff1a; 进程状态 发现进程的状态 运行队列 进程排队 进程状态的表述       状态在代码中的表示       运行状态       阻塞状态       挂起状态 总结 前言&#xff1a; 为了搞明白正在运行的进程是什么意思…

“批量记录,轻松修改:让收支明细管理更高效!“

在繁忙的现代生活中&#xff0c;管理个人收支明细成为了我们理财的重要一环。晨曦记账本&#xff0c;作为一款功能强大的记账工具&#xff0c;致力于帮助用户轻松记录和管理每一笔收支&#xff0c;让财务更加清晰、有序。 第一步&#xff0c;首先我们要记进入晨曦记账本主页面…

TSN工业交换机在煤矿行业的革命性应用

随着信息化时代的到来&#xff0c;煤矿行业也迎来了前所未有的机遇与挑战。在这个充满活力和竞争的领域&#xff0c;技术的革新对于提高生产效率、保障安全生产至关重要。而随着时间敏感网络&#xff08;TSN&#xff09;技术的不断发展&#xff0c;TSN工业交换机作为其关键组成…

第二证券|股票开户有什么条件?炒股新手一定要看!

股票买卖尽管投资风险是很高的&#xff0c;可是由于其报答性也高&#xff0c;仍是有许多投资者乐意去测验&#xff0c;这也带动了许多新手买卖。那么股票开户有什么条件&#xff1f;下面就由第二证券为大家剖析&#xff1a; 股票开户有什么条件&#xff1f; 1、年龄要求 处理…

二分查找的理解及应用场景。

一、是什么 在计算机科学中&#xff0c;二分查找算法&#xff0c;也称折半搜索算法&#xff0c;是一种在有序数组中查找某一特定元素的搜索算法 想要应用二分查找法&#xff0c;则这一堆数应有如下特性&#xff1a; 存储在数组中有序排序 搜索过程从数组的中间元素开始&…

(黑马出品_高级篇_02)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式

&#xff08;黑马出品_高级篇_02&#xff09;SpringCloudRabbitMQDockerRedis搜索分布式 微服务技术——分布式事务 今日目标1.分布式事务问题1.1.本地事务1.2.分布式事务1.3.演示分布式事务问题 2.理论基础2.1.CAP定理2.1.1.一致性2.1.2.可用性2…

WMS系统批次管理全面解析

一、WMS系统批次管理的基本概念 WMS系统的批次管理&#xff0c;是指对仓库中不同批次的产品进行精细化、规范化的管理&#xff0c;确保产品的可追溯性、可控制性和安全性。批次管理涉及到产品的入库、存储、出库等各个环节&#xff0c;通过对批次的精确控制&#xff0c;实现仓…

RK3568行业定制主板脉冲群抗扰度整改方案验证

1. 试验目的及原理 电快速瞬变脉冲群EFT试验的目的是验证电子设备机械开关对电感性负载切换、继电器触点弹跳、高压开关切换等引起的瞬时扰动的抗干扰能力。这种试验方法是一种耦合到电源线路、控制线路、信号线路上的由许多快速瞬变脉冲组成的脉冲群试验。容易出现问题的场合有…

微信小程序开发:上传网络图片到阿里云oss

上文遇到的问题&#xff0c;用户上传的人像图片在经过人像增强后返回的结果需要再次上传到阿里云的oss。 因为是需要下下载&#xff0c;再上传&#xff0c;这个域名我们没有在MP后台配置download域名&#xff0c;所以报错了&#xff1a; 但是MP后台只能配置https的域名&#xf…

常见面试题之计算机网络

1. OSI 五层模型&#xff08;或七层模型&#xff09;是什么&#xff0c;每一层的作用是什么 应用层&#xff1a;又可细分为应用层、表示层、会话层。其中应用层主要做的工作就是为应用程序提供服务&#xff0c;常见的协议为 HTTP、HTTPS、DNS等&#xff1b;表示层主要做的工作…

如何只用pycharm创建venv虚拟环境

如何只用pycharm创建venv虚拟环境 网上貌似没有好的博客讲解&#xff0c;我之前也一直在这环境搭建上疑惑。不过照着我这博客来&#xff0c;应该没问题了。 前言 如图所示&#xff0c;我新建了一个空白文件夹。 接下来点击终端&#xff08;AltF12&#xff09; 如果发现开头…