在 Windows 系统下配置 VSCode + CMake + Ninja 进行 C++ 或 Qt 开发

在 Windows 系统下配置 VSCode + CMake + Ninja 进行 C++ 或 Qt 开发,是一个轻量级但功能强大的开发环境。下面我将分步骤详细说明如何搭建这个开发环境,支持纯 C++ 和 Qt 项目。


🧰 所需工具安装

1. 安装 Visual Studio Code(VSCode)

  • 下载地址:https://code.visualstudio.com/
  • 安装后建议安装以下扩展(推荐):
    • C/C++(微软官方)
    • CMake
    • CMake Tools
    • Ninja(可选)
    • Qt Tools(用于 Qt 项目)

可直接搜索安装:Extensions: Install Extension (Ctrl+Shift+X),输入关键词如 CMake, Qt, C/C++


2. 安装 CMake

  • 下载地址:https://cmake.org/download/
  • 推荐使用图形化安装程序,并勾选"Add to system PATH"选项。
  • 验证是否安装成功:
bash 复制代码
cmake --version

3. 安装 Ninja

bash 复制代码
ninja --version

4. 安装编译器

方式一:MinGW-w64(推荐轻量级)
bash 复制代码
g++ --version
gcc --version
方式二:Visual Studio Build Tools(MSVC 编译器)

5. 安装 Qt(仅用于 Qt 项目)

  • 下载在线安装器:https://www.qt.io/download
  • 推荐选择 Qt Online Installer
  • 安装时选择:
    • Qt 版本(如 Qt 6.5.x MinGW 11.2.0 64-bit)
    • Qt Creator(可选)
  • 安装完成后,确保 Qt 的 bin 路径加入系统 PATH(如 C:\Qt\Tools\mingw1120_64\bin

🛠️ 配置 VSCode + CMake + Ninja

1. 设置默认构建工具为 Ninja

打开 VSCode,按下 Ctrl+Shift+P,输入并运行:

复制代码
CMake: Configure

选择你的编译器(例如 MinGW GCC x86_64),然后会自动生成 CMakeCache.txt 文件。

你也可以手动设置默认生成器,在 .vscode/settings.json 中添加:

json 复制代码
{
  "cmake.generator": "Ninja",
  "cmake.configureOnOpen": true,
  "cmake.buildDirectory": "${workspaceFolder}/build"
}

2. 基础目录结构示例

bash 复制代码
my_project/
├── CMakeLists.txt
├── src/
│   └── main.cpp
├── build/ (CMake 生成文件)
└── .vscode/
    ├── settings.json
    ├── tasks.json
    └── launch.json

3. 示例 CMakeLists.txt(C++ 项目)

cmake 复制代码
cmake_minimum_required(VERSION 3.16)
project(MyApp)

set(CMAKE_CXX_STANDARD 20)

add_executable(myapp src/main.cpp)

4. 示例 CMakeLists.txt(Qt 项目)

cmake 复制代码
cmake_minimum_required(VERSION 3.16)
project(QtApp)

set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUI ON)

find_package(Qt6 COMPONENTS Widgets REQUIRED)

add_executable(QtApp
    src/main.cpp
    src/mainwindow.cpp
    src/mainwindow.h
    src/mainwindow.ui
)

target_link_libraries(QtApp PRIVATE Qt6::Widgets)

5. 配置调试器(launch.json)

json 复制代码
{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "GDB Debug",
      "type": "cppdbg",
      "request": "launch",
      "program": "${workspaceFolder}/build/myapp.exe",
      "args": [],
      "stopAtEntry": false,
      "cwd": "${workspaceFolder}",
      "environment": [],
      "externalConsole": true,
      "MIMode": "gdb",
      "miDebuggerPath": "C:\\msys64\\mingw64\\bin\\gdb.exe"
    }
  ]
}

6. 配置任务(tasks.json)

json 复制代码
{
  "tasks": [
    {
      "label": "CMake Configure",
      "type": "shell",
      "command": "cmake",
      "args": ["-B", "${workspaceFolder}/build", "-G", "Ninja"],
      "group": { "kind": "build", "isDefault": true },
      "problemMatcher": ["$cmake"]
    },
    {
      "label": "CMake Build",
      "type": "shell",
      "command": "cmake",
      "args": ["--build", "${workspaceFolder}/build"],
      "group": { "kind": "build", "isDefault": true },
      "problemMatcher": ["$cmake"]
    }
  ],
  "version": "2.0.0"
}

✅ 使用流程总结

  1. 打开项目根目录(含 CMakeLists.txt);
  2. VSCode 会自动运行 CMake: Configure(根据 .vscode/settings.json);
  3. Ctrl+Shift+B 构建项目;
  4. F5 启动调试;
  5. 修改代码后重新构建即可运行新版本;

🧪 测试一个 Qt 项目(main.cpp)

cpp 复制代码
#include <QApplication>
#include <QLabel>

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);
    QLabel label("Hello from Qt!");
    label.show();
    return app.exec();
}

确保你的 mainwindow.ui.h.cpp 文件也存在并被正确引用。


📝 小贴士

  • 如果使用 MSVC 编译器,请确保从 VS 自带终端启动 VSCode;
  • Qt 项目需要确保所有依赖库都在 PATH 或链接正确;
  • 可以使用 qmake 或 Qt Creator 作为替代方案,但 VSCode 更加轻便灵活;
  • 对于大型项目,可以结合 conanvcpkg 管理第三方库。
相关推荐
QQ_4376643141 小时前
C++11 右值引用 Lambda 表达式
java·开发语言·c++
liulilittle2 小时前
C++/CLI与标准C++的语法差异(一)
开发语言·c++·.net·cli·clr·托管·原生
小狄同学呀2 小时前
VS插件报错,g++却完美编译?API调用错因分析
c++
程序员编程指南3 小时前
Qt 数据库连接池实现与管理
c语言·数据库·c++·qt·oracle
小乖兽技术3 小时前
C#与C++交互开发系列(二十四):WinForms 应用中嵌入C++ 原生窗体
c++·c#·交互
张北北.3 小时前
【深入底层】C++开发简历4+4技能描述6
java·开发语言·c++
吳所畏惧4 小时前
NVM踩坑实录:配置了npm的阿里云cdn之后,下载nodejs老版本(如:12.18.4)时,报404异常,下载失败的问题解决
前端·windows·阿里云·npm·node.js·batch命令
leese2334 小时前
FreeMarker模板引擎
windows
刚入坑的新人编程4 小时前
暑期算法训练.9
数据结构·c++·算法·leetcode·面试·排序算法
love530love5 小时前
命令行创建 UV 环境及本地化实战演示—— 基于《Python 多版本与开发环境治理架构设计》的最佳实践
开发语言·人工智能·windows·python·conda·uv