当前位置: 首页 > java >正文

在 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”选项。
  • 验证是否安装成功:
cmake --version

3. 安装 Ninja

  • 下载地址:https://github.com/ninja-build/ninja/releases
  • 下载 ninja.exe,放到系统路径中(如 C:\Windows\System32)或添加到 PATH
  • 验证是否安装成功:
ninja --version

4. 安装编译器

方式一:MinGW-w64(推荐轻量级)
  • 下载地址(推荐使用 MSYS2 提供的版本):
    • https://sourceforge.net/projects/mingw-w64/files/ (这个官方链接提供的文件不能直接使用)
    • https://github.com/niXman/mingw-builds-binaries/releases
  • 安装后将其 bin 目录加入系统 PATH
  • 验证:
g++ --version
gcc --version
方式二:Visual Studio Build Tools(MSVC 编译器)
  • 官网下载:https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022
  • 安装时选择 “C++ 构建工具”
  • 需要使用 x64 Native Tools Command Prompt for VS 来调用编译器

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 中添加:

{"cmake.generator": "Ninja","cmake.configureOnOpen": true,"cmake.buildDirectory": "${workspaceFolder}/build"
}

2. 基础目录结构示例

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

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

cmake_minimum_required(VERSION 3.16)
project(MyApp)set(CMAKE_CXX_STANDARD 20)add_executable(myapp src/main.cpp)

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

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(QtAppsrc/main.cppsrc/mainwindow.cppsrc/mainwindow.hsrc/mainwindow.ui
)target_link_libraries(QtApp PRIVATE Qt6::Widgets)

5. 配置调试器(launch.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)

{"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)

#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 管理第三方库。
http://www.xdnf.cn/news/11888.html

相关文章:

  • docker常见命令行用法
  • WebFuture:启动数据库提示: error while loading shared libraries: libaio.so.1问题处理
  • PaddleOCR(2):PaddleOCR环境搭建
  • 跨域请求解决方案全解析
  • NFT 市场开发:基于 Ethereum 和 IPFS 构建去中心化平台
  • Open SSL 3.0相关知识以及源码流程分析
  • 【定时器】定时器存在的内存泄露问题
  • [蓝桥杯]最大比例
  • springboot ErrorController getErrorPath() 版本变迁
  • Java设计模式:责任链模式
  • stress-ng 服务器压力测试的工具学习
  • .NET 原生驾驭 AI 新基建实战系列(三):Chroma ── 轻松构建智能应用的向量数据库
  • Orthanc:轻量级PACS服务器与DICOMweb支持的技术详解
  • 【unity游戏开发入门到精通——通用篇】从零掌握UnityWebRequest:文件下载、表单提交、超时处理、断点续传
  • UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
  • qt+vs Generated File下的moc_和ui_文件丢失导致 error LNK2001
  • Python_day44
  • 定制开发开源AI智能名片S2B2C商城小程序在无界零售中的应用与行业智能升级示范研究
  • NeRF PyTorch 源码解读 - NDC空间
  • AI,如何重构理解、匹配与决策?
  • FFmpeg avformat_open_input函数分析
  • [蓝桥杯]密文搜索
  • 深入解析 Java ClassLoader:揭开 JVM 动态加载的神秘面纱
  • CSP-J 信奥竞赛大纲(2025)
  • C语言-指针基础概念
  • 图神经网络实战——图属性度量方法详解
  • @Prometheus 监控-MySQL (Mysqld Exporter)
  • 【从GEO数据库批量下载数据】
  • docker生命周期
  • 结构性设计模式之Flyweight(享元)