【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、实现自动化构建和高效排错的关键能力。

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

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

相关推荐
魂万劫4 小时前
如何在虚拟机VM上|Linux环境内安装windows
linux·运维·服务器·windows
fengye2071615 小时前
win10+VM17+虚拟机win10搭建(三)
windows
love530love6 小时前
Windows 11 下再次成功本地编译 Flash-Attention 2.8.3 并生成自定义 Wheel(RTX 3090 sm_86 专属版)
人工智能·windows·笔记·编译·flash_attn·flash-attn·flash-attention
Web极客码7 小时前
使用VPS主机进行数据分析的主要优势
linux·windows·vps主机
seasonsyy8 小时前
Win7/Win10系统显示文件扩展名方法
windows
TypingLearn8 小时前
2026年,让.NET再次伟大
windows·c#·.net·sdk·netcore
慕容雪_10 小时前
springboot jar注册windows服务(WinSW版)
windows·spring boot·jar·服务
charlie0710 小时前
qmake工程不能显示手动配置的Kit
qt
私人珍藏库10 小时前
[Windows] Windows 超级管理器 v9.53
windows·工具·软件·win·管理器
深蓝海拓11 小时前
PySide6从0开始学习的笔记(二十) qdarkstyle的深入应用
笔记·python·qt·学习·pyqt