【AI时代速通QT】第十节:在 Windows 上配置vs和qmake环境手动编译 Qt 项目

目录

前言

一、准备工作:必要的软件和知识

二、核心挑战:配置正确的编译环境

[2.1 激活 Visual Studio 开发环境](#2.1 激活 Visual Studio 开发环境)

[2.2 配置 Qt 工具环境](#2.2 配置 Qt 工具环境)

[三、实战演练:手动编译 `testqmake` 项目](#三、实战演练:手动编译 testqmake 项目)

三、自动化:使用批处理脚本

结论


🎬 攻城狮7号个人主页

🔥 个人专栏 :C++QT跨平台界面编程

⛺️ 君子慎独!

🌈 大家好,欢迎来访我的博客!

⛳️ 此篇文章主要介绍 在 Windows 上配置vs和qmake环境变量手动编译 Qt 项目

📚 本期文章收录在《C++QT跨平台界面编程》,大家有兴趣可以自行查看!

⛺️ 欢迎各位 ✔️ 点赞 👍 收藏 ⭐留言 📝!

前言

作为 Qt 开发者,我们习惯了在 Qt Creator 中点击一下绿色箭头,所有复杂的编译、链接工作便在后台自动完成。这种集成开发环境(IDE)的便利性毋庸置疑,但它也像一个"黑盒子",让我们对底层到底发生了什么知之甚少。

那么,我们为什么要学习如何在命令行中手动编译 Qt 项目呢?

**(1)自动化构建(CI/CD):**当您需要将项目集成到 Jenkins、GitLab CI 等自动化流程中时,命令行是唯一可靠的交互方式。

**(2)深入理解构建系统:**掌握手动编译过程,能让您对 Qt 的 `qmake`、编译器的 `cl.exe`、链接器的 `link.exe` 如何协同工作有更深刻的认识。

**(3)精准的错误排查:**当遇到复杂的编译或链接错误时,直接在命令行中执行命令,可以获得最直接、最原始的错误信息,帮助您快速定位问题根源。

本文将以一个简单控制台项目为例,详细阐述在 Windows 环境下,如何配置 Visual Studio 和 Qt 的环境变量,并使用 `qmake` 和 `nmake` (或 `jom`) 从零开始构建一个可执行的 Qt 程序。

一、准备工作:必要的软件和知识

在开始之前,请确保您的系统中已经安装了以下软件:

**(1)Visual Studio:**并确保在安装时勾选了"使用 C++ 的桌面开发"工作负载。这将为我们提供必要的编译器(`cl.exe`)、链接器(`link.exe`)和构建工具(`nmake.exe`)。

**(2)Qt SDK:**请务必下载并安装与您的 Visual Studio 版本相对应的 MSVC 版本(例如,为 VS2019 下载 `msvc2019_64` 版)。

我们先创建一个文件夹名叫 `testqmake` ,这个项目非常简单,它只包含两个文件:

`testqmake.pro` - 项目配置文件:

XML 复制代码
SOURCES += main.cpp

CONFIG += console

这个配置文件告诉 `qmake`:

* 项目中有一个源文件,名为 `main.cpp`。

* 这是一个控制台应用程序(而不是 GUI 应用程序)。

`main.cpp` - C++ 源文件:

cpp 复制代码
#include <iostream>


int main()

{

    std::cout << "test for qmake" << std::endl;

    return 0;

}

这是一个标准的 C++ "Hello World" 程序,为了简化,我们这里不使用任何 Qt 库的特性。

二、核心挑战:配置正确的编译环境

如果您直接打开一个标准的 Windows 命令提示符(`cmd.exe`),然后尝试运行 `cl` 或 `qmake`,系统会提示"不是内部或外部命令"。这是因为操作系统不知道去哪里找这些可执行文件。为了解决这个问题,我们需要配置两个关键的环境:Visual Studio 的开发环境和 Qt 的工具环境。

2.1 激活 Visual Studio 开发环境

手动一个个去设置 VS 的 `PATH`, `INCLUDE`, `LIB` 等环境变量是一件极其繁琐且容易出错的事情。幸运的是,微软为我们提供了一个一站式的解决方案:`vcvarsall.bat` 批处理脚本。

这个脚本会自动检测您的系统和 VS 安装,然后为当前的命令行会话配置好所有必需的环境变量。

如何使用它?

(1)方法一(推荐):使用开发者命令提示符

这是最简单的方法。直接从开始菜单找到并启动"Developer Command Prompt for VS xxxx"(VS xxx 开发人员命令提示符)。这个快捷方式的本质就是在启动 `cmd.exe` 之前,自动为您运行了 `vcvarsall.bat`。

(2)方法二:手动调用脚本

如果您必须在标准的 `cmd.exe` 中工作,可以手动调用该脚本。它通常位于您的 Visual Studio 安装目录下,例如:

`"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat"`

您需要根据自己的 VS 版本和安装路径进行调整。

一旦环境激活,您可以在命令行中输入 `where cl`,如果系统能返回 `cl.exe` 的路径,则证明 VS 环境已准备就绪。

2.2 配置 Qt 工具环境

接下来,我们需要让命令行知道 `qmake.exe` 在哪里。这通常通过将 Qt 工具的路径添加到系统的 `PATH` 环境变量中来实现。

(1)在 Windows 搜索框中输入"环境变量",并选择"编辑系统环境变量"。

(2)在弹出的"系统属性"对话框中,点击"环境变量..."。

(3)在"系统变量"或"用户变量"区域找到 `Path` 变量,点击"编辑"。

(4)点击"新建",然后添加您的 Qt `bin` 目录的路径。例如:`C:\Qt\5.15.2\msvc2019_64\bin`。

(5)(可选但推荐) 同时,我们可以把 `jom.exe` 的路径也加进去。`jom` 是一个可以并行执行任务的 `nmake` 替代品,能显著加快编译速度。它通常位于 Qt Creator 的工具目录中,例如:`C:\Qt\Tools\QtCreator\bin`。

(6)一路点击"确定"保存设置。

重要提示: 修改完环境变量后,您需要重新打开一个新的命令行窗口,这些更改才会生效。

配置完成后,在新的命令行窗口中输入 `where qmake` 和 `where jom`,如果能成功返回路径,说明 Qt 环境也配置好了。

三、实战演练:手动编译 `testqmake` 项目

现在,万事俱备。让我们来一步步编译项目。

(1)第一步:启动配置好的终端

打开一个"Developer Command Prompt for VS",这个终端已经为我们处理好了 VS 的环境。

(2)第二步:进入项目目录

使用 `cd` 命令切换到 `testqmake` 项目所在的文件夹。

bash 复制代码
cd C:\xxxx\testqmake

(3)第三步:运行 `qmake` 生成 Makefile

在项目目录下,执行 `qmake` 命令。`qmake` 会读取 `testqmake.pro` 文件,并生成一个 `Makefile`,这个文件描述了如何编译和链接我们的项目。

bash 复制代码
qmake testqmake.pro (或qmake -o makefile testqmake.pro)

命令执行成功后,您会发现目录下多出了 `Makefile`, `Makefile.Debug`, `Makefile.Release` 等文件。

(4)第四步:运行 `nmake` 或 `jom` 执行编译

现在,我们使用构建工具来读取 `Makefile` 并执行其中定义的指令。

* 使用 `nmake` (VS 自带)

bash 复制代码
    nmake /f Makefile.Release

这里我们指定了编译 Release 版本。如果不指定,默认可能会编译 Debug 版本。

* 使用 `jom` (更快)

如果您配置了 `jom`,可以直接使用它,它会自动寻找 `Makefile` 并以并行方式执行,速度更快。

bash 复制代码
    jom /f Makefile.Release

构建工具会调用 `cl.exe` 来编译 `main.cpp` 生成 `main.obj`,然后调用 `link.exe` 将 `main.obj` 和必要的库链接起来,最终在 `release` 文件夹下生成 `testqmake.exe`。

(5)第五步:运行程序

编译成功后,您可以直接运行生成的可执行文件:

bash 复制代码
release\testqmake.exe

如果一切顺利,您将在控制台上看到输出 "test for qmake"。

三、自动化:使用批处理脚本

为了简化上述流程,我们可以将这些命令写入一个批处理脚本(`.bat` 文件),就像项目中的 `make.bat` 一样。

一个典型的构建脚本可能如下所示:

bash 复制代码
@echo off


:: 1. Call the VS environment setup script

call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat"


:: 2. Generate the Makefile

echo --- Running qmake...

qmake testqmake.pro


:: 3. Build the project using jom (or nmake) for the Release configuration

echo --- Building with jom...

jom /f Makefile.Release


:: 4. Pause to see the output

pause

有了这个脚本,您只需双击它,或者在任何命令行窗口中运行 `make.bat`,就可以自动完成整个编译过程,非常适合集成到更复杂的自动化任务中。

结论

虽然现代 IDE 提供了极大的便利,但回归命令行,手动走一遍 Qt 项目的编译流程,能让我们对底层的构建原理有更透彻的理解。掌握了**激活 VS 环境(通过 `vcvarsall.bat` 或开发者终端)、配置 Qt 工具路径(通过 `PATH` 变量)以及执行核心命令(`qmake` 和 `nmake/jom`)**这三大步骤,您就拥有了脱离 IDE、实现自动化构建和高效排错的关键能力。

看到这里了还不给博主点一个:
⛳️ 点赞☀️收藏 ⭐️ 关注

💛 💙 💜 ❤️ 💚💓 💗 💕 💞 💘 💖
再次感谢大家的支持!
你们的点赞就是博主更新最大的动力!

相关推荐
用户805533698034 天前
不止三件套:QObject 属性系统全关键字与运行时反射!
c++·qt
xcyxiner4 天前
DicomViewer (vcpkg Windows和ubuntu编译)7
qt
Quz9 天前
QML Hello World 入门示例
qt
xcyxiner12 天前
DicomViewer (dcmtk读取dcm文件)5
qt
xcyxiner13 天前
DicomViewer (后台线程处理文件)4
qt
xcyxiner13 天前
DicomViewer (添加模型类)3
qt
xcyxiner14 天前
DicomViewer (目录调整) 2
qt
xcyxiner14 天前
dcmtk vtk vtk-dicom(gdcm) 编译(debug) v2
qt
qq_3692243316 天前
Windows全系通用!ntdll.dll文件丢失、报错、闪退问题的完整排查与修复教程
windows·dll·dll修复·dll丢失·dll错误
桥田智能16 天前
桥田智能 QT-650S:面向白车身焊装的 800kg 重载快换解决方案
开发语言·qt·系统架构