Windows下使用 VS Code + g++ 开发 Qt GUI 项目的完整指南

🚀 使用 VS Code + g++ 开发 Qt GUI 项目的完整指南(Windows + MSYS2)

本指南帮助你在 Windows 下使用 VS Code + g++ + CMake + Qt6 快速搭建 Qt GUI 项目,适合熟悉 Visual Studio 的开发者向跨平台 VS Code 工具链迁移。


🛠️ 一、环境准备

1. 安装 MSYS2

2. 安装 Qt 和工具链(在 MinGW64 终端中):

bash 复制代码
pacman -S \
  mingw-w64-x86_64-toolchain \
  mingw-w64-x86_64-cmake \
  mingw-w64-x86_64-ninja \
  mingw-w64-x86_64-qt6-base \
  mingw-w64-x86_64-qt6-tools \
  mingw-w64-x86_64-qt6-declarative \
  mingw-w64-x86_64-qt6-svg \
  mingw-w64-x86_64-qt6-shadertools \
  mingw-w64-x86_64-qt6-multimedia \
  mingw-w64-x86_64-qt6-translations

📁 二、项目目录结构

text 复制代码
QtGuiApp/
│
├── .vscode/
│   ├── c_cpp_properties.json     # IntelliSense
│   ├── tasks.json                # 构建任务
│   ├── launch.json               # 调试配置
│
├── build/                        # 构建输出目录
├── CMakeLists.txt                # CMake 配置
├── main.cpp                      # 主程序
├── mainwindow.cpp / .h / .ui     # Qt 主窗口

⚙️ 三、CMake 配置 CMakeLists.txt

cmake 复制代码
cmake_minimum_required(VERSION 3.16)
project(QtGuiApp LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC ON)

find_package(Qt6 REQUIRED COMPONENTS Widgets)

add_executable(QtGuiApp
    main.cpp
    mainwindow.cpp
    mainwindow.h
    mainwindow.ui
)

target_link_libraries(QtGuiApp PRIVATE Qt6::Widgets)

💡 四、VS Code 配置

1. IntelliSense .vscode/c_cpp_properties.json

json 复制代码
{
  "configurations": [
    {
      "name": "Win32",
      "includePath": [
        "${workspaceFolder}/**",
        "C:/msys64/mingw64/include",
        "C:/msys64/mingw64/include/c++/14.2.0",
        "C:/msys64/mingw64/include/c++/14.2.0/x86_64-w64-mingw32",
        "C:/msys64/mingw64/include/Qt6",
        "C:/msys64/mingw64/include/Qt6/QtWidgets",
        "C:/msys64/mingw64/include/Qt6/QtCore"
      ],
      "defines": ["_DEBUG", "UNICODE"],
      "compilerPath": "C:/msys64/mingw64/bin/g++.exe",
      "cStandard": "c17",
      "cppStandard": "c++17",
      "intelliSenseMode": "windows-gcc-x64"
    }
  ],
  "version": 4
}

2. 构建与运行任务 .vscode/tasks.json

json 复制代码
{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "CMake Configure",
      "type": "shell",
      "command": "cmake -S . -B build -G Ninja",
      "group": "build"
    },
    {
      "label": "CMake Build",
      "type": "shell",
      "command": "cmake --build build",
      "group": "build",
      "dependsOn": ["CMake Configure"]
    },
    {
      "label": "Run Executable",
      "type": "shell",
      "command": ".\\build\\QtGuiApp.exe",
      "group": {
        "kind": "test",
        "isDefault": true
      },
      "dependsOn": ["CMake Build"]
    }
  ]
}

3. 调试配置 .vscode/launch.json

json 复制代码
{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Debug Qt App",
      "type": "cppdbg",
      "request": "launch",
      "program": "${workspaceFolder}/build/QtGuiApp.exe",
      "args": [],
      "stopAtEntry": false,
      "cwd": "${workspaceFolder}/build",
      "environment": [],
      "externalConsole": false,
      "MIMode": "gdb",
      "miDebuggerPath": "C:/msys64/mingw64/bin/gdb.exe",
      "setupCommands": [
        {
          "description": "Enable pretty-printing",
          "text": "-enable-pretty-printing",
          "ignoreFailures": true
        }
      ]
    }
  ]
}

📦 五、使用 windeployqt 打包 Qt GUI 应用

在 MSYS2 MinGW64 终端中,使用以下命令将 Qt 依赖复制到可执行文件目录:

bash 复制代码
cd build
windeployqt QtGuiApp.exe

该命令会自动将 Qt DLL、平台插件、SVG 模块等复制至当前目录,生成可独立运行的 .exe 包。


🔍 六、Visual Studio 与 VS Code 使用差异对比

特性 Visual Studio VS Code + g++ + CMake
工程结构 .sln, .vcxproj 图形化工程 CMakeLists.txt 构建系统
编译器 MSVC g++ (MinGW64 from MSYS2)
构建方式 菜单或按钮自动构建 tasks.json 自定义任务/命令行构建
调试器 内建 VS 调试器 gdb + launch.json 配置调试
跨平台 Windows 为主 跨平台:Windows / Linux / macOS
UI 设计工具 Qt Designer 插件或内嵌 独立 Qt Designer(.ui 文件)

✅ 附:检查 g++ 支持的 C++ 标准版本

bash 复制代码
g++ -std=c++17 -dM -E - < nul | findstr __cplusplus

相关推荐
海绵宝宝汉堡包1 小时前
c# 项目 文件夹
开发语言·c#
小白要加油努力2 小时前
C++设计模式--策略模式与观察者模式
开发语言·c++·设计模式
小陈永不服输2 小时前
Windows下RabbitMQ完整安装指南
windows·分布式·rabbitmq
小马学嵌入式~2 小时前
数据结构:队列 二叉树
c语言·开发语言·数据结构·算法
准女婿_2 小时前
优考试局域网系统V6.0.0版
linux·windows·用户运营
一个处女座的程序猿3 小时前
LLMs之Agent:Windows-MCP的简介、安装和使用方法、案例应用之详细攻略
windows·mcp
Slaughter信仰3 小时前
深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)第二章知识点问答(21题)
java·开发语言·jvm
焊锡与代码齐飞4 小时前
嵌入式第三十五课!!Linux下的网络编程
linux·运维·服务器·开发语言·网络·学习·算法
KeithTsui4 小时前
GCC C语言整数转换的理解(Understanding of Integer Conversions in C with GCC)
c语言·开发语言·算法
秉承初心4 小时前
Node.js 开发 JavaScript SDK 包的完整指南(AI)
开发语言·javascript·node.js