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

相关推荐
用户805533698031 天前
不止三件套:QObject 属性系统全关键字与运行时反射!
c++·qt
xcyxiner1 天前
DicomViewer (vcpkg Windows和ubuntu编译)7
qt
Quz6 天前
QML Hello World 入门示例
qt
xcyxiner9 天前
DicomViewer (dcmtk读取dcm文件)5
qt
xcyxiner10 天前
DicomViewer (后台线程处理文件)4
qt
xcyxiner10 天前
DicomViewer (添加模型类)3
qt
xcyxiner11 天前
DicomViewer (目录调整) 2
qt
xcyxiner11 天前
dcmtk vtk vtk-dicom(gdcm) 编译(debug) v2
qt
LDR00613 天前
Type-C 快充全面升级!LDR6601 赋能个人护理便携电机,重塑剃须刀 / 理发器新体验
c语言·开发语言
雪碧聊技术13 天前
Tree.js是什么?一文讲透
开发语言·javascript·ecmascript