Bootstrap

在 Visual Studio Code 中使用 qmake 构建和调试 Qt 项目

在 Visual Studio Code 中使用 qmake 构建和调试 Qt 项目

在 Qt 开发中,qmake 是一个常用的构建工具。然而,Visual Studio Code(VSCode)并未直接支持 qmake,因此我们需要通过配置任务和调试设置来集成 qmake 项目。本文将详细介绍如何在 VSCode 中使用 qmake


为什么选择 VSCode?

使用 VSCode 开发 Qt 项目具有以下优势:

  1. 丰富的插件生态
    • VSCode 拥有大量的插件生态,涵盖多种开发需求。例如:
      • 笔记插件(如 Foam):方便开发者在项目中记录设计思路或问题跟踪。
      • 代码 AI 辅助插件(如 GitHub Copilot):通过人工智能提供代码补全和建议,提升开发效率。
      • REST API 测试插件(如 REST Client):在开发涉及网络交互的 Qt 应用时,可以直接在编辑器中测试 API。

这些插件的功能 Qt Creator 无法直接提供,极大地扩展了开发者的工具集。

  1. 轻量级和跨平台
    • VSCode 是一个轻量级的编辑器,可以在多种平台上流畅运行,包括 Windows、Linux 和 macOS。
  2. 高度自定义
    • VSCode 提供了灵活的配置选项,允许开发者根据自己的需求定制工作环境。
  3. 广泛的社区支持
    • 作为流行的编辑器之一,VSCode 拥有庞大的社区支持,可以快速解决使用中的问题。

环境准备

安装必要插件

  1. 打开 VSCode 的扩展市场,搜索并安装以下插件:
    • C/C++(Microsoft 提供,用于代码高亮和 IntelliSense)。
    • Qt for VSCode(支持 Qt 项目开发)。
    • GitLens(提供丰富的 Git 集成功能)。
    • GitHub Copilot(AI 辅助代码编写)。
    • REST Client(测试 REST API)。

确保 qmake 可用

在终端中运行以下命令,检查 qmake 是否安装并可用:

qmake -v

如果没有安装,请根据你的系统安装 Qt 开发环境。


配置 VSCode

在 VSCode 中,通过 .vscode 文件夹下的配置文件来集成 qmake

配置构建任务

  1. 创建 tasks.json 文件:

在项目目录下,创建文件:

.vscode/tasks.json
  1. 添加以下内容:
{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "qmake",
            "type": "shell",
            "command": "qmake",
            "args": [
                "-makefile",
                "YourProject.pro"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            }
        },
        {
            "label": "make",
            "type": "shell",
            "command": "make",
            "group": {
                "kind": "build",
                "isDefault": false
            },
            "dependsOn": "qmake"
        }
    ]
}
    • YourProject.pro 替换为你的 .pro 文件名称。
    • 如果使用的是 nmake 或其他构建工具,将 make 替换为适合你的命令。

配置调试器

  1. 创建 launch.json 文件:

.vscode 文件夹下,创建文件:

.vscode/launch.json
  1. 添加以下内容:
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Debug",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/build/YourExecutable",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "make",
            "miDebuggerPath": "/usr/bin/gdb"
        }
    ]
}
    • 替换 YourExecutable 为生成的可执行文件名称(如 myapp)。
    • 如果使用其他调试器(如 lldb),调整 miDebuggerPath

配置 IntelliSense

为了启用代码补全和语法检查,创建 c_cpp_properties.json 文件。

  1. 创建文件:
.vscode/c_cpp_properties.json
  1. 添加以下内容:
{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}/**",
                "/usr/include",
                "/usr/include/qt",
                "/usr/include/qt/QtWidgets",
                "/usr/include/qt/QtCore"
            ],
            "defines": [],
            "compilerPath": "/usr/bin/gcc",
            "cStandard": "c11",
            "cppStandard": "c++17",
            "intelliSenseMode": "linux-gcc-x64"
        }
    ],
    "version": 4
}
    • 根据你的系统调整 Qt 的头文件路径和编译器路径。

添加或删除文件

在 Qt 项目中,如果需要添加或删除文件(如源文件或头文件),必须修改 qmake 的工程文件 .pro

添加文件

  1. 打开你的 .pro 文件。
  2. 将新的文件添加到对应的变量中,例如:
SOURCES += main.cpp newfile.cpp
HEADERS += main.h newfile.h
  1. 保存并重新运行 qmake
qmake -makefile YourProject.pro

删除文件

  1. 打开 .pro 文件,删除不需要的文件。
  2. 保存并重新运行 qmake

通过这种方式,确保你的工程文件始终与项目的实际文件一致。


构建和调试

构建项目

  1. Ctrl+Shift+B,选择 qmakemake 任务来构建项目。
  2. 如果任务运行成功,可在构建目录中找到生成的可执行文件。

调试项目

  1. F5 或在调试面板中启动调试。
  2. 如果配置正确,调试器将启动并附加到你的项目。

总结

通过配置 tasks.jsonlaunch.json,我们可以在 VSCode 中无缝集成 qmake 项目,实现构建和调试。同时,使用 c_cpp_properties.json 配置 IntelliSense,可以提高代码编辑体验。

虽然 VSCode 不像 Qt Creator 那样对 Qt 项目有内置支持,但它丰富的插件生态(如笔记和 AI 辅助插件)和高度的可定制性,使得它成为 Qt 开发的一个优秀选择。

;