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

相关推荐
dpxiaolong4 分钟前
RK3588平台用v4l工具调试USB摄像头实践(亮度,饱和度,对比度,色相等)
android·windows
只可远观6 分钟前
Flutter Dart 循环语句 for while do..while break、continue
开发语言·javascript·ecmascript
꧁坚持很酷꧂1 小时前
Winddows11官网下载安装VMware Workstation Pro17(图文详解)
windows
吴_知遇1 小时前
【华为OD机试真题】428、连续字母长度 | 机试真题+思路参考+代码解析(E卷)(C++)
开发语言·c++·华为od
心随_风动1 小时前
主流操作系统对比分析(macOS、Linux、Windows、Unix)
linux·windows·macos
basketball6162 小时前
Python torchvision.transforms 下常用图像处理方法
开发语言·图像处理·python
兔子蟹子2 小时前
Java集合框架解析
java·windows·python
宁酱醇2 小时前
各种各样的bug合集
开发语言·笔记·python·gitlab·bug
啊吧怪不啊吧2 小时前
Linux常见指令介绍下(入门级)
linux·开发语言·centos
谷晓光2 小时前
Python 中 `r` 前缀:字符串处理的“防转义利器”
开发语言·python