跳转至

Cpp

环境搭建

推荐使用 MSYS + VSCode 搭建开发环境

安装工具链

请先完成 MSYS 的安装

通过如下命令安装编译器和解释器

pacman -S mingw-w64-ucrt-x86_64-gcc mingw-w64-ucrt-x86_64-gdb

如此一来环境其实已经搭建完成了。你现在可以直接在终端里进入 MSYS 环境,然后编译文件、调试程序。

只不过,如果你想要使用 VSCode 的语言服务,那么需要配置智能感知。如果你想要 GUI 操作支持,那么需要配置调试任务。

编辑器集成

VSCode 官方文档

需要安装以下插件

添加环境变量

Warning

修改 PATH 变量可能不是最好的做法。虽然这让我们能够不进入 MSYS 环境就使用编译器,但有潜在的环境的冲突的可能。最好还是进入环境后再使用编译器。你可以配置自定义任务来使用 VSCode 的 GUI。

把编译器所在目录添加到系统 PATH 变量中

setx PATH "path\to\msys2\ucrt64\bin;%PATH%"

测试是否成功(在 VSCode 中打开集成终端,不进入 MSYS 环境)

gcc --version

配置智能感知

输入 VSCode 命令 C/C++: Edit Configurations,调整需要的设置。会自动在 .vscode/c_cpp_properties.json 中生成配置文件,当然你也可以手动修改该文件

配置出来的 c_cpp_properties.json 文件大概长这样

{
    "configurations": [
        {
            "name": "gcc",
            "includePath": [
                "${workspaceFolder}/**"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "compilerPath": "C:/msys64/ucrt64/bin/g++.exe",
            "cStandard": "gnu23",
            "cppStandard": "gnu++23",
            "intelliSenseMode": "windows-gcc-x64"
        }
    ],
    "version": 4
}

现在代码可以使用语言服务了。

配置调试任务

新建一个 test.ctest.cpp 文件,然后输入 VSCode 命令 C/C++: Add Debug Configuration,选择 C/C++ 插件的默认配置模板。然后会在 .vscode 目录下自动生成配置文件。

自动生成的 tasks.jsonlaunch.json 文件大概分别长这样

{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: g++.exe 生成活动文件",
            "command": "C:\\msys64\\ucrt64\\bin\\g++.exe",
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": "build",
            "detail": "调试器生成的任务。"
        }
    ],
    "version": "2.0.0"
}
{
    "version": "2.0.0",
    "configurations": [
        {
            "name": "C/C++: g++.exe 构建和调试活动文件",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "C:\\msys64\\ucrt64\\bin\\gdb.exe",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                },
                {
                    "description": "将反汇编风格设置为 Intel",
                    "text": "-gdb-set disassembly-flavor intel",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "C/C++: g++.exe 生成活动文件"
        }
    ]
}

现在可以直接点击按钮来编译、运行和调试了。

有关这些配置文件的更多信息,请参考

命令行工具

包管理器

包管理生态非常乱,没有官方标准,有各种第三方包管理器

系统包管理器也能管理 C/C++ 的包。不过现代项目不推荐使用系统包管理器,没法跨平台,难协作

构建系统

  • make
  • cmake
  • xmake

Clang 工具链

  • clang clang++ 新一代编译器
  • lldb 新一代调试器
  • clang-tidy 静态检查
  • clang-format 格式化

文档生成

  • doxygen

内存分析

  • drmemory 只有 windows 可用
  • valgrind 只有 linux 可用

玩具

  • cling 解释器
  • xeus-cling 编程笔记本(Windows 无法使用)

库和框架

通用库

  • boost 标准库增强

测试框架

  • benchmark 基准测试框架
  • gtest 单元测试框架

图形界面框架

  • qt 图形界面框架