Linux下vscode配置C++和python编译调试环境

Visual Studio Code (简称 VSCode) 是由微软开发的一款免费、开源、跨平台的代码编辑器。它支持 Windows、macOS 和 Linux 操作系统,并且内置对多种编程语言的支持,包括但不限于 C/C++、Python、JavaScript、TypeScript、Java 和 Go 等。VSCode 主要用于编写、调试和运行代码,并且提供了丰富的扩展支持。

1. vscode配置C++编译和调试环境 

一般vscode配置C++有三个文件,它们分别是:

1.1. c_cpp_properties.json

c_cpp_properties.json 是vscode插件使用的配置文件,主要用于为 C/C++ 项目提供 IntelliSense、编译器路径、包含路径等信息。该文件的主要作用是帮助 VSCode 了解你的开发环境,以便提供更好的代码补全、语法检查和错误提示等功能。

通过Ctrl+Shift+P,输入C++,在下拉菜单中选择“C/C++ Edit configuration”,系统自动会在.vscode目录下创建该文件,供我们设置编译环境。可根据自己需求改动如下配置,一般配置如下:

{"configurations": [{"name": "Linux",                           // 配置的名称, 用于区分平台"includePath": ["${workspaceFolder}/**",               // 工作区中的所有文件"/usr/include",                        // 系统头文件路径"/usr/local/include"                   // 本地安装的软件包的头文件路径],"defines": [],"compilerPath": "/usr/bin/gcc",            // GCC 编译器的路径"cStandard": "c17",                        // 使用 C11 标准"cppStandard": "gnu++14",                  // 使用 gnu++14标准 "intelliSenseMode": "linux-gcc-x64",       // IntelliSense 模式,适用于 linux GCC 64 位"compilerArgs": [                          // 可选的编译器额外参数"-Wall","-Wextra","-Werror"]}],"version": 4                                       // vscode插件的配置文件版本号
}

关键字段解释

name: 配置的名称,通常根据使用的平台命名,如 "Linux"、"Win32"、"MacOS" 等。用于区分不同平台或环境的配置。

includePath: 头文件的搜索路径。在 Linux 下,系统头文件通常位于 /usr/include 和 /usr/local/include,同时还可以添加项目的包含路径。"${workspaceFolder}/**" 表示包含整个工作区的所有文件和子目录。

defines: 预处理器定义,类似于在编译时使用的 -D 选项。可以用于控制条件编译。在 Linux 环境下,常见的预定义宏是 LINUX 或 _LINUX_,有时还会定义调试宏 _DEBUG。

compilerPath: 编译器的路径。在 Linux 下通常是 GCC 编译器,路径可能是 /usr/bin/gcc 或 /usr/bin/clang,具体取决于你使用的编译器。

cStandard: C 语言的标准,可以选择 c89、c99、c11 等。确保选择的标准与项目中使用的编译标准相匹配。

cppStandard: C++ 语言的标准,可以选择 c++11、c++14、c++17、c++20 等。确保与项目的 C++ 标准一致。

intelliSenseMode: IntelliSense 模式,用于指导 VSCode 的智能补全和语法检查。对于 Linux 上的 GCC,可以使用 gcc-x64,如果使用 Clang,则可以选择 clang-x64。

compilerArgs: 可选字段,用于指定编译器的额外参数,例如 -Wall、-Wextra、-Werror 等,用来控制警告和错误的输出。这些参数不会影响实际编译,只用于影响 VSCode 的错误提示和 IntelliSense 行为。

1.2. tasks.json

tasks.json 是vscode用于配置编译任务的文件。在 Linux 下,通过 tasks.json 可以为 C/C++ 项目设置自动编译任务,如调用 gcc 或 g++ 来编译源代码。

通过Ctrl+Shift+p,输入Tasks,选择Tasks: Configure Task,然后按回车键,然后选择Create tasks.json file from template,最后选择GCC (适用于 C/C++),一般配置如下:

{"version": "2.0.0","tasks": [{"label": "build",               // 任务名称"type": "shell",                // 任务类型,使用 shell 命令"command": "/usr/bin/g++",       // 调用的编译器,Linux 下通常是 g++"args": ["-g",                        // 生成调试信息"${workspaceFolder}/src/*.cpp",                   // 编译当前打开的文件"-o",                        // 输出文件"${workspaceFolder}/build/${fileBasenameNoExtension}",  // 输出文件名,与源文件名相同"-I/usr/include/eigen3",    // 包含 Eigen 库头文件的路径(如果使用包管理器安装)"-I/path/to/eigen"          // 如果手动安装 Eigen,则使用该路径],"group": {"kind": "build","isDefault": true            // 设为默认构建任务,使用 Ctrl + Shift + B 可直接运行},"problemMatcher": ["$gcc"],      // 使用 GCC 的问题匹配器来显示编译错误和警告"detail": "Task for building C++ files"  // 任务的详细描述,可选}]
}

关键字解释

1. "version":版本号,指定 tasks.json 的文件格式版本。通常使用 "2.0.0"。

2. "tasks":定义一个或多个任务的数组。每个任务是一个编译或执行过程的配置。

3. "label":任务的名称,可以是任意字符串。这个名称会出现在 VSCode 的任务列表中,用户可以通过名称运行该任务。

4. "type":任务的类型,在 Linux 环境下通常使用 "shell",表示这个任务是在终端中通过 shell 命令执行的。

6. "args":命令的参数,这是一个数组,传递给命令行工具(如 g++)的参数。常见参数包括:
-g:生成调试信息,用于调试时需要。
${file}:表示当前打开的源文件的完整路径。
-o:指定输出文件的名称。
${fileDirname}/${fileBasenameNoExtension}:表示输出文件的路径和名称,生成与源文件同名的可执行文件。

7. "group":任务组,允许将任务分组:
"kind": "build":表明这是一个构建任务,通常用于编译代码。
"isDefault": true:表示这是默认的构建任务,使用 Ctrl + Shift + B 时会自动执行此任务。

8. "problemMatcher":问题匹配器,用于将编译器输出的错误和警告信息与 VSCode 关联。对于 GCC 和 G++ 编译器,通常使用 "$gcc"。这会帮助 VSCode 识别编译错误并在编辑器中标记出来。

9. "detail":任务的详细描述,帮助开发者理解任务的用途。这个字段是可选的。

1.3. launch.json

launch.json 是用于配置调试环境的文件。对于在 Linux 环境下调试 C++ 项目,特别是基于 CMake 的项目,launch.json 文件中需要配置如何使用调试器(通常是 GDB),以及指定调试的可执行文件。

通过Ctrl+Shift+P打开命令行,输入输入 Debug: Add Configuration,选择 C++ (GDB/LLDB) 或 C++ (GDB),VSCode 会生成一个基本的 launch.json 文件,并自动将其存放在工作区的 .vscode 文件夹中。配置如下:

{"version": "0.2.0","configurations": [{"name": "Launch Program",               // 调试配置的名称,任意自定义"type": "cppdbg",                       // 指定 C++ 调试类型"request": "launch",                    // 请求类型,"launch" 表示启动程序"program": "${workspaceFolder}/build/${fileBasenameNoExtension}", // 要调试的可执行文件路径"args": [],                             // 程序启动时传递的参数(可为空)"stopAtEntry": false,                   // 是否在程序入口处暂停"cwd": "${workspaceFolder}",            // 设置工作目录"environment": [],                      // 环境变量配置(可为空)"externalConsole": false,               // 是否使用外部终端"MIMode": "gdb",                        // 使用的调试器模式,通常是 GDB"setupCommands": [                      // 调试器启动时执行的命令{"description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true}],"miDebuggerPath": "/usr/bin/gdb",       // GDB 调试器路径"preLaunchTask": "CMake Build",         // 调试前执行的任务,一般为构建任务"internalConsoleOptions": "openOnSessionStart"  // 调试控制台的设置}]
}

关键配置参数:

program:要调试的可执行文件的路径。这里你可以使用 ${workspaceFolder} 变量来表示当前工作区的根目录,通常结合 CMake,可执行文件生成在 build 文件夹中,例如 "${workspaceFolder}/build/my_program"。

args:传递给程序的命令行参数。如果你的程序需要接受参数,可以在此设置,例如 ["arg1", "arg2"]。如果没有参数,则保持为空。

至此,你就可以开始在vscode中编写、编译以及调试C++代码了。

1.4. VSCode调试CMakeLists.txt

不过上面是VSCode 直接编译任务,使用自带的任务系统可以直接调用编译器(如 g++ 或 gcc),通过配置 tasks.json 来实现编译,适合于小型项目或没有复杂构建需求的项目。而对于一个大型项目一般采用CMake进行编译,CMake 是一个强大的跨平台构建系统,适合管理复杂的项目,特别是有多个源文件、头文件、外部库依赖的项目。为了在 VSCode 中使用 CMake,需要安装以下插件:CMake Tools。然后修改tasks.json文件如下,其他两个文件不用修改。

{"version": "2.0.0","tasks": [{"label": "CMake Build",               // 任务名称"type": "shell","command": "cmake",                   // 使用 cmake 命令"args": ["--build",                        // 构建参数"${workspaceFolder}/build"        // 构建文件的输出目录],"group": {"kind": "build","isDefault": true                 // 设置为默认构建任务},"problemMatcher": ["$gcc"]},{"label": "CMake Configure",           // 任务名称"type": "shell","command": "cmake","args": ["-S", "${workspaceFolder}",       // 源目录"-B", "${workspaceFolder}/build"  // 构建目录],"group": {"kind": "build","isDefault": false },"problemMatcher": []}]
}

按 Ctrl + Shift + P,然后选择 CMake: Configure。插件会自动检测到 CMakeLists.txt,并在 build 文件夹中生成构建文件。或者直接进入build文件执行camke ..也可以生成构建文件。

CMakeLists.txt文件如下:

cmake_minimum_required(VERSION 3.10)set(CMAKE_BUILD_TYPE Debug)  # 确保在Debug模式下编译# 设置项目名称和语言
project(EigenExample)# 查找 Eigen3
find_package(Eigen3 3.3 REQUIRED NO_MODULE)# 指定要生成的可执行文件
add_executable(eigen_example ./src/cpp_matrix_operation.cpp)# 将 Eigen3 的头文件包含到项目中
target_link_libraries(eigen_example Eigen3::Eigen)

Debug界面如下:

2. vscode配置python编译和调试环境 

调试前安装一下插件Python Debugger。

VSCode调试python代码比较简单,首先打开命令面板:按 Ctrl + Shift + P,输入 Python: Select Interpreter 并选择你要使用的 Python 解释器。如果你使用的是系统 Python 3,通常路径是 /usr/bin/python3。然后按 F5 启动调试器,选择Python Debugger,然后选择Python File,最后就可以直接调试了。

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

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

相关文章

HarmonyOS ArkUI 构建布局

文章目录 一、构建布局1.线性布局 (Row/Column)1.1 Blank空白填充组件1.2 layoutWeight 自适应缩放1.3 自适应延伸 2.弹性布局 (Flex)3.栅格布局 (GridRow/GridCol)3.创建列表 (List) 一、构建布局 1.线性布局 (Row/Column) 线性布局文档 通过线性容器Row和Column构建 Column…

SpringBoot项目获取统一前缀配置以及获取非确定名称配置

SpringBoot项目获取统一前缀配置以及获取非确定名称配置 在SpringBoot项目中,我们经常看到统一前缀的配置,我们该怎么统一获取 my.config.a.namexiaoming my.config.a.age18 my.config.a.addressguangdong my.config.b.namexiaomli my.config.b.age20 my…

《深度学习》OpenCV 高阶 图像金字塔 用法解析及案例实现

目录 一、图像金字塔 1、什么是图像金字塔 2、图像金字塔作用 1)金字塔尺度间的图像信息补充 2)目标检测与识别 3)图像融合与拼接 4)图像增强与去噪 5)图像压缩与编码 二、用法解析 1、向下采样 1)概念…

使用SQL语句查询MySQL数据表

6.1 创建单表基本查询 1&#xff0e;Select 语句的语法格式及其功能 &#xff08;1&#xff09;Select 语句的一般格式。 Select < 字段名称或表达式列表 > From < 数据表名称或视图名称 > [ Where < 条件表达式 > ] [ Group By < 分组的字段名称…

xss-labs-master通关教程

一.level1 先来进行一下代码审计 <?php ini_set("display_errors", 0);//关闭错误显示 $str $_GET["name"]; //接受URL来的get形式的name传参 echo "<h2 aligncenter>欢迎用户".$str."</h2>";//在网页输出&#x…

STM32 之 SDRAM 详解

目录 前言 一、SDRAM 简介 二、SDRAM的组成原理 2.1存储单元阵列 2.1.1地址译码 2.1.2存储电容 2.2控制逻辑 2.2.1时钟同步 2.2.2命令解码 2.2.3模式寄存器 2.3数据输入 / 输出缓冲 2.3.1数据总线 2.3.2数据锁存 2.4刷新电路 2.4.1自动刷新 2.4.2自刷新 三、S…

SaaS化多租户实现的两种方法

SaaS化多租户实现的两种方法 SaaS系统的定义 SaaS&#xff0c;全称为Software-as-a-Service&#xff08;软件即服务&#xff09;&#xff0c;是一种基于云计算的软件交付模式。而SaaS系统&#xff0c;即是通过这种模式提供给用户的软件系统。即多租户系统&#xff0c;每个租户…

腾讯云升级多个云存储解决方案 以智能化存储助力企业增长

9月6日&#xff0c;在腾讯数字生态大会腾讯云储存专场上&#xff0c;腾讯云升级多个存储解决方案&#xff1a;Data Platform 数据平台解决方案重磅发布&#xff0c;数据加速器 GooseFS、数据处理平台数据万象、日志服务 CLS、高性能并行文件存储 CFS Turbo 等多产品全新升级&am…

TypeScript 扩展

扩展 ?:可选参数 可选链事实上并不是TypeScript独有的特性&#xff0c;它是ES11&#xff08;ES2020&#xff09;中增加的特性 可选链使用可选链操作符 ? 作用是当对象的属性不存在时&#xff0c;会短路&#xff0c;直接返回undefined&#xff0c;如果存在&#xff0c;那么…

SpringCloud集成ELK

1、添加依赖 <dependency><groupId>net.logstash.logback</groupId><artifactId>logstash-logback-encoder</artifactId><version>6.1</version> </dependency>2、在logback-spring.xml中添加配置信息&#xff08;logback-sp…

Android SystemUI组件(06)导航栏创建分析虚拟按键

该系列文章总纲链接&#xff1a;专题分纲目录 Android SystemUI组件 本章关键点总结 & 说明&#xff1a; 说明&#xff1a;本章节持续迭代之前章节的思维导图&#xff0c;主要关注左侧SystemBars分析中导航栏部分即可。 1 导航栏创建之makeStatusBarView 通过上一篇文章的…

前端 + 接口请求实现 vue 动态路由

前端 接口请求实现 vue 动态路由 在 Vue 应用中&#xff0c;通过前端结合后端接口请求来实现动态路由是一种常见且有效的权限控制方案。这种方法允许前端根据用户的角色和权限&#xff0c;动态生成和加载路由&#xff0c;而不是在应用启动时就固定所有的路由配置。 实现原理…

el-tree父子不互相关联时,手动实现全选、反选、子级全选、清空功能

el-tree父子不互相关联时&#xff0c;手动实现全选、反选、子级全选、清空功能 1、功能实现图示 2、实现思路 当属性check-strictly为true时&#xff0c;父子节点不互相关联&#xff0c;如果需要全部选中或选择某一节点下的全部节点就必须手动选择每个节点&#xff0c;十分麻…

【mysql】逻辑运算符

逻辑运算符 逻辑运算符主要是为了判断表达式的真假,返回结果也是1,0,null OR 这里面或就是两个条件或的关系,比如我要department_id等于10和等于20的情况就可以使用或. SELECT last_name,salary,department_id FROM employees WHERE department_id10 OR department_id20 …

CTF——简单的《WEB》

文章目录 一、WEB1、easysql2、baby_web3、baby_sql4、upload_easy5、easygame拓展1.1拓展1.2 6、ht_ssti7、包容乃大 一、WEB 1、easysql 题目描述&#xff1a; sql注入漏洞 1.常用的sql注入测试语句 2.sql注入bypass 解题思路 这边提示基本给的也很完整的&#xff0c;不…

C++开发基础之理解 CUDA 编译配置:`compute_XX` 和 `sm_XX` 的作用

前言 在 CUDA 编程中&#xff0c;确保代码能够在不同的 NVIDIA GPU 上高效运行是非常重要的。为了实现这一点&#xff0c;CUDA 编译器 (nvcc) 提供了多种配置选项&#xff0c;其中 compute_XX 和 sm_XX 是两个关键的编译选项。本文将深入探讨这两个选项的作用及其配置顺序&…

大一新生以此篇开启你的算法之路

各位大一计算机萌新们&#xff0c;你们好&#xff0c;本篇博客会带领大家进行算法入门&#xff0c;给各位大一萌新答疑解惑。博客文章略长&#xff0c;可根据自己的需要观看&#xff0c;在博客中会有给大一萌新问题的解答&#xff0c;请不要错过。 入门简介&#xff1a; 算法…

可信的人类与人工智能协作:基于人类反馈和物理知识的安全自主驾驶强化学习

可信的人类与人工智能协作&#xff1a;基于人类反馈和物理知识的安全自主驾驶强化学习 Abstract 在自动驾驶领域&#xff0c;开发安全且可信赖的自动驾驶策略仍然是一项重大挑战。近年来&#xff0c;结合人类反馈的强化学习&#xff08;RLHF&#xff09;因其提升训练安全性和…

中国银河资产笔试25届考什么?如何通过考试|附真题库面试攻略

嘿&#xff0c;各位小伙伴们&#xff01;我是职小豚&#xff0c;今天就带大家一起探秘中国银河资产 25 届秋招&#xff0c;为大家揭开这场金融之旅的神秘面纱。 一、中国银河资产介绍 中国银河资产&#xff0c;那可是金融领域的璀璨巨星&#xff01;它就像一座闪耀着智慧光芒…

unity安装配置和vs2022联动教程

目录 1.选择vs2022配置 2.安装unity 2.1安装unity hub 2.2注册个人账号 2.3安装编辑器 2.4修改为简体中文 2.5添加许可证 2.6安装位置修改 3.项目的创建 3.1如何创建 3.2如何选择 3.3配置语言 3.4去哪里找语言包 4.unity编辑器窗口的介绍 4.1游戏的运行和停止 4…