当前位置: 首页 > news >正文

Qt 5.9.9 + MSVC2015 64bit + qmake 超详细全流程手册

目录

Qt 5.9.9 + MSVC2015 64bit + qmake 超详细全流程手册

第一部分 基础概念 & 工程文件全景(人工阶段)

1.1 整套工具链分工(底层定位)

1.2 工程目录结构(影子构建,Qt 标准规范)

目录分层

1.3 逐个文件深度详解

1.3.1 .pro 工程文件(qmake 核心配置文件)

完整可运行示例(带全注释)

关键约束

1.3.2 .h 头文件(重点:Q_OBJECT 宏规则)

强制规则(高频报错点)

1.3.3 .cpp 源文件

1.3.4 .ui 界面文件

1.3.5 .qrc Qt 资源文件

1.3.6 .rc Windows 原生资源文件(可选)

1.3.7 .pro.user 文件

第二部分 阶段 1:qmake 生成编译规则(从 .pro → Makefile)

2.1 执行时机与命令

2.2 qmake 完整工作流程(隐性动作拆解)

2.3 qmake 全部输出文件 & 作用

2.4 核心约束

第三部分 阶段 2:jom 启动编译调度(总控入口)

3.1 jom 与 nmake 区别

3.2 jom 核心能力

3.3 整体调度链路

第四部分 阶段 3:Qt 预处理工具(非 C++ 文件转 C++ 代码)

4.1 uic.exe (UI 编译器,处理 .ui)

执行命令(Makefile 自动调用)

输入输出

生成代码细节

运行逻辑

4.2 rcc.exe (资源编译器,处理 .qrc)

执行命令

输入输出

底层原理

4.3 moc.exe (元对象编译器,Qt 灵魂)

设计背景

执行命令

输入输出

moc 生成的代码明细(逐段说明)

致命约束 & 报错对应

4.4 rc.exe (MSVC 原生资源编译器,处理 .rc)

执行命令

第五部分 阶段 4:cl.exe MSVC 编译(源码 → 目标文件 .obj)

5.1 编译输入文件全集

5.2 完整编译命令 + 逐参数解析

Release 版本完整指令

高危坑点

5.3 cl.exe 输出产物

第六部分 阶段 5:link.exe MSVC 链接(.obj → 可执行文件 .exe)

6.1 链接输入文件全集

6.2 完整链接命令 + 参数解析

6.3 链接产物(Debug / Release 区分)

Debug 模式(调试版)

Release 模式(发行版)

6.4 链接阶段经典报错根源

第七部分 阶段 6:编译后依赖 & 部署(可运行闭环)

7.1 依赖 1:MSVC 运行库

7.2 依赖 2:Qt 动态库 & 插件

第八部分 阶段 7:文件清理(中间文件运维)

第九部分 全流程终极时序图(完整闭环)

第十部分 全局核心规则总结(避坑速查)


​​​​​​​Qt 5.9.9 + MSVC2015 64bit + qmake 超详细全流程手册

基于 Windows 平台,从工程概念、工具原理、文件细节、命令行参数、编译链路、内存布局、报错根源、增量编译、影子构建、调试部署、清理运维做逐层拆解,覆盖每一个隐性动作、底层逻辑、约束规则,做到无死角说明。

统一环境基线

  1. 操作系统:Windows 10/11 64 位
  2. Qt 版本:Qt 5.9.9
  3. 编译套件:Desktop Qt 5.9.9 MSVC2015 64bit
  4. 构建系统:qmake + jom(Qt 默认,替代微软 nmake)
  5. 编译器:MSVC2015cl.exe(C/C++ 前端)
  6. 链接器:MSVC2015link.exe
  7. 附属工具:Qt (moc/uic/rcc)、MSVC (rc.exe)、部署 (windeployqt)
  8. 工程类型:Qt Widgets GUI 应用程序

第一部分 基础概念 & 工程文件全景(人工阶段)

1.1 整套工具链分工(底层定位)

先区分两大阵营,全程互不混淆:

  1. Qt 预处理工具(跨平台,和编译器无关)
    • uic.exe:UI 界面编译器
    • rcc.exe:资源编译器
    • moc.exe:元对象编译器(Qt 信号槽核心)
  2. MSVC 原生工具链(Windows 专属编译 / 链接)
    • jom.exe/nmake.exe:任务调度器(解析 Makefile,串行 / 并行执行命令)
    • cl.exe:C/C++ 代码编译器(源码 → 目标文件)
    • link.exe:链接器(目标文件 + 库 → 可执行程序)
    • rc.exe:Windows 原生资源编译器(图标、版本、清单)
  3. 辅助工具
    • qmake.exe:工程配置生成器(.pro → Makefile)
    • windeployqt.exe:Qt 依赖部署工具

1.2 工程目录结构(影子构建,Qt 标准规范)

Qt 强制使用影子构建(Shadow Build),目的:源码目录纯净、多编译模式 / 多套件隔离、防止中间文件污染源码。

目录分层

plaintext

DemoProject/ # 项目根目录(源码根目录) ├─ Demo.pro # qmake 工程配置文件 ├─ main.h / main.cpp # 业务源码 ├─ mainwindow.h / .cpp # 窗口类源码(含 Q_OBJECT) ├─ mainwindow.ui # 界面 XML 文件 ├─ res.qrc # Qt 资源文件 ├─ app.rc # Windows 原生资源文件(可选) └─ Demo.pro.user # Qt Creator 本地用户配置(仅IDE使用) build-Demo-MSVC2015-Debug/ # Debug 构建目录(影子目录1) build-Demo-MSVC2015-Release/# Release 构建目录(影子目录2)
  • 源码目录:仅存放手写 / IDE 生成的原始文件,编译全程不产生任何中间文件
  • 构建目录:所有预处理代码、目标文件、exe、调试文件、日志全部生成在这里。
  • 切换 Debug/Release、切换 x86/x64、切换 MSVC/MinGW 都会生成独立构建目录,完全隔离。

1.3 逐个文件深度详解

1.3.1.pro工程文件(qmake 核心配置文件)

本质:qmake 的脚本语言,描述工程模块、文件列表、编译规则、路径、宏、平台特性。

完整可运行示例(带全注释)

qmake

# ===================== 1. 基础工程配置 ===================== TEMPLATE = app # 工程类型:app=可执行程序;lib=库;subdirs=多子工程 TARGET = DemoApp # 最终生成的 exe 名称 CONFIG += qt warn_on # 启用Qt、启用编译警告 CONFIG -= console # 关闭控制台窗口(GUI程序必备) # ===================== 2. 依赖 Qt 模块 ===================== # Qt5 必须显式声明依赖模块,缺模块直接编译失败 QT += core gui widgets # ===================== 3. 源码/资源文件列表 ===================== # C++ 源文件 SOURCES += \ main.cpp \ mainwindow.cpp # C++ 头文件 HEADERS += \ mainwindow.h # UI 界面文件(Qt Designer 生成) FORMS += \ mainwindow.ui # Qt 资源文件(图片、样式、字体) RESOURCES += \ res.qrc # Windows 原生资源文件(图标、版本、manifest,可选) RC_FILE += app.rc # ===================== 4. 路径配置(可选) ===================== INCLUDEPATH += ./include # 自定义头文件目录 LIBS += -L./lib -lThirdLib # 第三方库目录+库名 # ===================== 5. 平台区分配置(Windows 专属) ===================== win32 { # Windows 平台额外配置 DESTDIR = bin # 最终exe输出到 bin 目录 }
关键约束
  1. 文件列表换行必须用\续行符;
  2. QT += xxx漏写模块,会出现头文件找不到、链接缺失符号
  3. 修改.pro文件后,必须重新执行 qmake,否则新配置不生效。

1.3.2.h头文件(重点:Q_OBJECT 宏规则)

Qt 类只要满足以下任意一条,必须加Q_OBJECT

  • 使用signals信号、slots槽函数;
  • 使用Q_PROPERTY动态属性;
  • 需要运行时类型识别、动态反射。
强制规则(高频报错点)
  1. Q_OBJECT只能写在头文件的类定义内部,不能写在.cpp里;
  2. 类必须直接 / 间接继承 QObject(QWidget、QMainWindow、QDialog 都满足);
  3. 包含Q_OBJECT的头文件,必须被 moc 单独处理

示例标准头文件:

cpp

运行

#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include "ui_mainwindow.h" // uic 后续生成的 UI 头文件 class MainWindow : public QMainWindow { Q_OBJECT // 触发 moc 代码生成,位置固定在类内部第一行附近 public: explicit MainWindow(QWidget *parent = nullptr); // 信号:仅声明,实现由 moc 自动生成 signals: void dataChanged(int val); // 槽函数:声明+开发者实现 public slots: void onBtnClicked(); private: Ui::MainWindow ui; // 嵌入UI类,关联拖拽的所有控件 }; #endif // MAINWINDOW_H

1.3.3.cpp源文件

标准 C++ 实现文件,编写业务逻辑、槽函数实现、构造函数。 构造函数中必须调用ui.setupUi(this),加载 uic 生成的界面代码。


1.3.4.ui界面文件

本质:XML 格式文本文件,Qt Designer 拖拽控件时,实时写入控件坐标、大小、文本、布局、样式、对象名。 开发者不需要手写界面代码,由uic翻译成标准 C++。


1.3.5.qrcQt 资源文件

XML 格式,作用:将外部图片、QSS、字体、配置文件打包进程序内部,脱离外部文件依赖。 核心特性:Qt 虚拟文件系统:/,代码中通过:/前缀/文件名访问资源。

示例:

xml

<RCC> <!-- prefix 虚拟路径前缀 --> <qresource prefix="/images"> <file>logo.png</file> <file>icon.png</file> </qresource> </RCC>

代码访问:QPixmap(":/images/logo.png")


1.3.6.rcWindows 原生资源文件(可选)

MSVC 专属资源脚本,用于设置:程序图标、文件版本、公司名称、产品描述、UAC 权限清单 (manifest)。 编译后生成.res二进制资源,最终嵌入 EXE。


1.3.7.pro.user文件

Qt Creator 专属本地配置文件,XML 格式,内容包括:

  • 当前选中的编译套件、编译模式;
  • 断点、书签、运行参数、环境变量;
  • 窗口布局、项目视图配置。完全不参与编译、不参与链接,删除后仅重置 IDE 配置,工程不受影响。

第二部分 阶段 1:qmake 生成编译规则(从 .pro → Makefile)

2.1 执行时机与命令

进入构建目录执行(Qt Creator 后台自动执行):

bash

运行

# 进入构建目录 cd build-Demo-MSVC2015-Release # 读取上级目录的 .pro 文件,生成 MSVC 格式 Makefile qmake ../Demo.pro
http://www.gsyq.cn/news/1530810.html

相关文章:

  • 模型剪枝与知识蒸馏:压缩大模型的两种路径与工程取舍
  • 避坑指南:选内衬不锈钢复合管厂家要避开这5个坑 - 信息热点
  • 天猫流量转化实战专家/机构测评榜单选型(2026中立客观版) - 品牌2026推荐
  • Ohook:解锁Microsoft 365完整功能的开源钩子技术方案
  • Grok 复制内容带井号(#)怎么办?试试 AI 导出鸭,快速剔除井号,修复复制导出异常问题
  • Linux 达梦数据库(DM8)超详细全流程手册(生产级 / 嵌入式 / GIS 开发专属)
  • 题解:洛谷 P3388 割点
  • VLE指令集:嵌入式开发中的代码密度优化与混合编码实践
  • 一体化污水处理设备技术解析与合规落地指南 - 奔跑123
  • USB-Disk-Ejector:Windows设备安全弹出终极解决方案,告别繁琐操作!
  • 旧衣回收小程序开发攻略
  • DataWorks新手避坑指南:ODPS SQL执行报错的8个常见原因与修复方法
  • 预算20万网站建设公司怎么选?2026年差异化建站服务商梯队排行,适配专项体验解析 - 资讯报道
  • I2C中断驱动编程实战:寄存器配置与状态机设计详解
  • 5分钟搞定全球地理数据:world.geo.json的终极快速入门指南
  • 2026 宁波江北除醛深度测评:多维度拆解优劣,本地优选品牌解读 - 泓动
  • 2026年十大优质变压器油生产厂家性价比排行榜 - 信息热点
  • HBM高带宽内存深度解析|吃透3D堆叠TSV核心原理、完胜DDR5带宽功耗瓶颈、附Python仿真代码、助力AI大模型训练推理高效落地
  • AVL树详解
  • 2026精选:福州代理记账十大排行榜本土企业 ——高性价之选 - 资讯速览
  • 4步终极指南:使用OpenCore Legacy Patcher让老旧Mac焕发新生
  • CRT-Royale-Reshade:在现代游戏中复活经典CRT显示器的视觉魔法
  • 北海高口碑黄金铂金回收白银回收实体老店排行 5 家靠谱门店电话地址全收录
  • B站视频数据分析神器:Bilivideoinfo完整使用指南
  • EASY-HWID-SPOOFER:Windows硬件信息伪装工具全面指南
  • 浏览器端EPUB电子书制作工具:零安装的专业创作体验
  • 专业滤袋服务商哪家强?7维度实测 - 资讯速览
  • 长沙专业全屋定制公司,为你打造理想家居空间! - 资讯速览
  • VisualCppRedist AIO:Windows系统运行库一体化部署架构深度解析
  • 台钓/海钓鱼竿怎么选?行情解析与优质厂家推荐 - 品牌推荐大师