您的当前位置:首页正文

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

2024-11-08 来源:个人技术集锦

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 了解你的开发环境,以便提供更好的代码补全、语法检查和错误提示等功能。

{
    "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" 等。用于区分不同平台或环境的配置。

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"  // 调试控制台的设置
        }
    ]
}

关键配置参数:

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,最后就可以直接调试了。

Top