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

相关推荐
机器视觉知识推荐、就业指导13 分钟前
手动开发一个TCP客户端调试工具(一):了解Qt中TCP通信原理与核心类
网络·qt·tcp/ip
屁股割了还要学1 小时前
【数据结构入门】时间、空间复杂度的计算
c语言·开发语言·数据结构·c++·算法
倒悬于世1 小时前
ThreadLocal详解
java·开发语言·jvm
啃火龙果的兔子2 小时前
快速搭建Java服务指南
java·开发语言
未来之窗软件服务2 小时前
智慧收银系统开发进销存库存统计,便利店、水果店、建材与家居行业的库存汇总管理—仙盟创梦IDE
java·开发语言·ide·进销存·仙盟创梦ide·东方仙盟·收银台
pusue_the_sun2 小时前
从零开始搞定类和对象(上)
开发语言·c++
归云鹤3 小时前
QT信号和槽怎么传输自己定义的数据结构
开发语言·数据结构·qt
ytttr8733 小时前
MATLAB 实现 SRCNN 图像超分辨率重建
开发语言·matlab·超分辨率重建
饭碗的彼岸one3 小时前
重生之我在10天内卷赢C++ - DAY 1
linux·开发语言·c++·经验分享·笔记·学习方法
项目申报小狂人3 小时前
2025年1中科院1区顶刊SCI-投影迭代优化算法Projection Iterative Methods-附完整Matlab免费代码
开发语言·算法·matlab