跳至主要內容
CMake 在 Linux/VSCode 下的常见问题与解决

问题描述

CMake Error: Could not create named generator MinGW Makefiles

该错误常见于 VSCode 配置 CMake 项目时,CMake 默认生成器设置为 MinGW Makefiles,但当前环境(如 macOS、Linux)并不支持 MinGW。

解决方法

.vscode/settings.json 中指定合适的生成器,例如:

{
  "cmake.generator": "Unix Makefiles"
}

KSJ小于 1 分钟C++
C++ 实现 lambda 重载模式

C++17 引入了结构化绑定和模板参数包展开,使得我们可以优雅地实现 lambda 重载模式。该模式常用于 std::visit 等需要对多种类型进行分派的场景。

1. 原理与实现

核心代码如下:

// 定义一个模板结构体,将多个 lambda 继承并展开 operator()
template <class... Ts> struct overloaded : Ts... {
    using Ts::operator()...;
};
template <class... Ts> overloaded(Ts...) -> overloaded<Ts...>;

KSJ大约 1 分钟C++C++17lambdastd::visit模板元编程
在 VSCode 中调试 Google Test

本文介绍如何在 VSCode 下配置 Google Test 的断点调试环境,包括 launch.json 和 tasks.json 的标准写法,以及调试流程说明。

1. 配置 launch.json

.vscode/launch.json 中添加如下内容:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Debug GTest (Auto)",
            "type": "cppdbg",
            "request": "launch",
            "program": "${command:cmake.launchTargetPath}",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "lldb",
            "preLaunchTask": "cmake: build"
        }
    ]
}

KSJ小于 1 分钟C++gtestvscodedebugcmake