目录

🎬 攻城狮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` - 项目配置文件:
SOURCES += main.cpp
CONFIG += console
这个配置文件告诉 `qmake`:
* 项目中有一个源文件,名为 `main.cpp`。
* 这是一个控制台应用程序(而不是 GUI 应用程序)。
`main.cpp` - C++ 源文件:
#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` 项目所在的文件夹。
cd C:\xxxx\testqmake
(3)第三步:运行 `qmake` 生成 Makefile
在项目目录下,执行 `qmake` 命令。`qmake` 会读取 `testqmake.pro` 文件,并生成一个 `Makefile`,这个文件描述了如何编译和链接我们的项目。
qmake testqmake.pro (或qmake -o makefile testqmake.pro)
命令执行成功后,您会发现目录下多出了 `Makefile`, `Makefile.Debug`, `Makefile.Release` 等文件。
(4)第四步:运行 `nmake` 或 `jom` 执行编译
现在,我们使用构建工具来读取 `Makefile` 并执行其中定义的指令。
* 使用 `nmake` (VS 自带)
nmake /f Makefile.Release
这里我们指定了编译 Release 版本。如果不指定,默认可能会编译 Debug 版本。
* 使用 `jom` (更快)
如果您配置了 `jom`,可以直接使用它,它会自动寻找 `Makefile` 并以并行方式执行,速度更快。
jom /f Makefile.Release
构建工具会调用 `cl.exe` 来编译 `main.cpp` 生成 `main.obj`,然后调用 `link.exe` 将 `main.obj` 和必要的库链接起来,最终在 `release` 文件夹下生成 `testqmake.exe`。
(5)第五步:运行程序
编译成功后,您可以直接运行生成的可执行文件:
release\testqmake.exe
如果一切顺利,您将在控制台上看到输出 "test for qmake"。
三、自动化:使用批处理脚本
为了简化上述流程,我们可以将这些命令写入一个批处理脚本(`.bat` 文件),就像项目中的 `make.bat` 一样。
一个典型的构建脚本可能如下所示:
@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、实现自动化构建和高效排错的关键能力。
看到这里了还不给博主点一个:
⛳️ 点赞☀️收藏 ⭐️ 关注!
💛 💙 💜 ❤️ 💚💓 💗 💕 💞 💘 💖
再次感谢大家的支持!
你们的点赞就是博主更新最大的动力!
2383

被折叠的 条评论
为什么被折叠?



