问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

VSCode + Qt + QMake 开发编译环境搭建

创作时间:
作者:
@小白创作中心

VSCode + Qt + QMake 开发编译环境搭建

引用
1
来源
1.
https://www.cnblogs.com/RioTian/p/18281114

本文将详细介绍如何在VSCode中配置Qt开发环境,使用QMake构建系统进行项目开发。文章主要针对Windows平台,但Mac和Linux用户也可以参考其核心概念进行配置。

前置准备

  • VSCode:最新版本即可
  • 本地Qt环境:版本随意,本文主要针对较老版本使用Qmake构建系统的项目

环境变量

  • Qt环境变量:需要配置Qt库和MinGW,建议使用Qt安装时自带的MinGW

VSCode插件

  • C/C++:必需插件
  • Qt tools:辅助插件

开始配置

1. 创建项目

先用Qt Creator创建一个Qmake项目,最简单的空白窗口项目即可。

2. 使用VSCode打开项目

3. 配置C/C++插件

在VSCode中使用快捷键Ctrl+Shift+P打开命令面板,输入c++,选择编辑配置。

4. 编辑C/C++设置

  • 编译器路径:选择配置环境变量的Qt版本,如果没有下拉选项,手动复制路径
  • IntelliSense模式:选择安装的GCC架构,例如windows-gcc-x64
  • 头文件路径:配置当前工作目录和Qt库的头文件路径
{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "${workspaceFolder}/**",
                "D:/software/language/qt/5.15.2/mingw81_64/include/**"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "compilerPath": "D:/software/language/qt/Tools/mingw810_64/bin/g++.exe",
            "intelliSenseMode": "windows-gcc-x64"
        }
    ],
    "version": 4
}

5. 配置task.json

分析Qt Creator构建步骤

  • 设置构建目录:编译出来的中间文件目录
  • qmake命令:将.pro配置文件编译成makefile
# Debug
D:/software/language/qt/5.15.2/mingw81_64/bin/qmake.exe D:\Coding\temp\test_demo\test_demo.pro -spec win32-g++ "CONFIG+=debug" "CONFIG+=qml_debug" && D:/software/language/qt/Tools/mingw810_64/bin/mingw32-make.exe qmake_all

# Release
D:/software/language/qt/5.15.2/mingw81_64/bin/qmake.exe D:\Coding\temp\test_demo\test_demo.pro -spec win32-g++ "CONFIG+=qtquickcompiler" && D:/software/language/qt/Tools/mingw810_64/bin/mingw32-make.exe qmake_all
  • make命令:真正的编译cpp
mingw32-make.exe -j12 in D:\Coding\temp\test_demo\build\Debug
  • clean命令:清理构建目录
mingw32-make.exe clean -j12 in D:\Coding\temp\test_demo\build\Debug

配置task.json

将上述Qt Creator构建步骤转换为VSCode的task.json配置:

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "mkdir",
            "type": "shell",
            "options": {
                "cwd": "${workspaceFolder}"
            },
            "command": "mkdir",
            "args": ["-Force", "build"]
        },
        {
            "label": "qmake-debug",
            "type": "shell",
            "options": {
                "cwd": "${workspaceFolder}/build"
            },
            "command": "qmake",
            "args": [
                "../${workspaceFolderBasename}.pro",
                "-spec",
                "win32-g++",
                "\"CONFIG+=debug\"",
                "\"CONFIG+=qml_debug\""
            ],
            "dependsOn": ["mkdir"]
        },
        {
            "label": "make-debug",
            "type": "shell",
            "options": {
                "cwd": "${workspaceFolder}/build"
            },
            "command": "mingw32-make",
            "args": ["-f", "Makefile.Debug", "-j7"],
            "dependsOn": ["qmake-debug"]
        },
        {
            "label": "run-debug",
            "type": "process",
            "options": {
                "cwd": "${workspaceFolder}/build/debug"
            },
            "command": "${workspaceFolderBasename}.exe",
            "dependsOn": ["make-debug"]
        },
        {
            "label": "qmake-release",
            "type": "shell",
            "options": {
                "cwd": "${workspaceFolder}/build"
            },
            "command": "qmake",
            "args": [
                "../${workspaceFolderBasename}.pro",
                "-spec",
                "win32-g++",
                "\"CONFIG+=qtquickcompiler\""
            ]
        },
        {
            "label": "make-release",
            "type": "shell",
            "options": {
                "cwd": "${workspaceFolder}/build"
            },
            "command": "mingw32-make",
            "args": ["-f", "Makefile.Release", "-j7"],
            "dependsOn": ["qmake-release"]
        },
        {
            "label": "run-release",
            "type": "process",
            "options": {
                "cwd": "${workspaceFolder}/build/release"
            },
            "command": "${workspaceFolderBasename}.exe",
            "dependsOn": ["make-release"]
        },
        {
            "label": "clean",
            "type": "shell",
            "options": {
                "cwd": "${workspaceFolder}/build"
            },
            "command": "mingw32-make",
            "args": ["clean"]
        }
    ]
}

运行代码

有两种方式运行代码:

  • 终端运行任务:选择run-debugrun-release
  • 快捷键运行:使用Ctrl+Shift+P,输入run,选择run-debugrun-release

6. 配置断点调试

选择gdb启动模板进行修改:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "debug",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/build/Debug/${workspaceFolderBasename}.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "D:/software/language/qt/Tools/mingw810_64/bin/gdb.exe",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "make-debug"
        }
    ]
}

运行调试

  • 打开调试面板,选择配置
  • 设置断点,点击绿色三角形运行

  • run-debug及自动生成的目录结构、控制台log,使用Ctrl+C结束程序
  • run-release
  • debug断点调试
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号