Qt安装目录的结构及工具集介绍
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
了解Qt 安装目录的结构虽然不是编程必须的,但是它能练就我们的内功,让我们对 Qt 的编程环境了如指掌。Windows 和 Linux 下 Qt 安装目录的结构非常相似,我们以 Windows 为例进行讲解,Linux 不再赘述。
Qt 整体目录结构
不同版本 Qt 的安装目录结构大同小异,本节我们以 Qt 5.9.0 为例来说明,如下图所示。
图1:Qt 安装目录的结构
为了方便描述,下文我们使用~表示 Qt 的安装目录。
注意,~\5.9\ 和 ~\Tools\ 目录下都有mingw53_32 目录(图中我用红
色标出来了),但是两者是有区别的:
•~\5.9\mingw53_32\ 目录包含的是 Qt 的类库文件,例如头文件、静态库、动态库等,这些类库文件使用 MinGW 工具集编译而成。
•~\Tools\mingw53_32\ 目录包含的是 MinGW 工具集,例如编译器 g++、链接器ld、make 工具、打包工具 ar 等。
QtCreator 是个例外,QtCreator 使用 MSVC2015 编译生成的,所以安装目录里有一个 vcredist 文件夹存储 VC 运行库安装文件。
最后的 MaintenanceTool.exe ,对于离线安装包,它只能用于删除软件包,如果 Qt 开发环境是用在线安装方式装的,这个工具还可以管理开发环境组件和升级组件。
Qt 类库的帮助文件位于 Docs 文件夹里,需要用 Qt Assistant 工具才能查看。
Examples 里是示例代码,可以用 QtCreator 集成开发环境打开各个示例。
Qt 类库目录
下面我们再探究一下 Qt 类库目录(~\5.9\mingw53_32\)的结构,如下图所示。
图2:Qt 类库目录
图上列的比较有限,不一定全面,主要是教大家熟悉一下 Qt 的开发环境。
QT不是凭空产生的,它是基于现有工具链打造而成的,它所使用的编译器、链接器、调试器等都不是自己的,Qt 官方只是开发了上层工具。下面我们分几个部分讲解 Qt 使用到的工具链。
GNU 工具集
在上个世纪八十年代,计算机都是奢侈品,操作系统里最著名的是 Unix
家族,当时还没有 Windows、Linux 之类的,Unix 系统都是商业软件,里面
的应用软件也是商业软件,全是封闭的环境。
GNU 项目是为了创建自由的类 Unix 系统,也因此开发出来很多开源的系
统工具,其中非常著名的就是GCC(GNU Compiler Collection,GNU编译器套件)。
现在我们知道,GUN 开发类 Unix 系统的项目失败了,但是它开发的一系
列工具集却用到了后来的 Linux 内核上,两者结合形成了今天的各种 Linux
发行版。在 GNU 工具集里面,开发时常见到的几个罗列如下(这些工具通常位于 Linux 或 Unix 系统里的 /usr/bin/ 目录):
MinGW
原本 GNU 工具只在 Linux/Unix 系统里才有,随着 Windows 系统的广泛使用,为了在 Windows 系统里可以使用 GNU 工具,诞生了 MinGW
(Minimalist GNU for Windows)项目,利用 MinGW 就可以生成 Windows 里面的 exe 程序和 dll 链接库。
需要注意的是,MinGW 与 Linux/Unix 系统里 GNU 工具集的有些区别:•MinGW 里面工具带有扩展名 .exe, Linux/Unix 系统里工具通常都是没有扩展名的。
•MinGW 里面的生成器文件名为 mingw32-make.exe,Linux/Unix 系统里就叫make。
•MinGW 在链接时是链接到 *.a 库引用文件,生成的可执行程序运行时依赖*.dll,而 Linux/Unix 系统里链接时和运行时都是使用 *.so 。
另外 MinGW 里也没有 ldd 工具,因为 Windows 不使用 .so 共享库文件。
如果要查看 Windows 里可执行文件的依赖库,需要使用微软自家的
Dependency Walker 工具。Windows 里面动态库扩展名为 .dll,MinGW 可以通过 dlltool 来生成用于创建和使用动态链接库需要的文件,如 .def 和 .lib。
MinGW 原本是用于生成 32 位程序的,随着 64 位系统流行起来,从
MinGW 分离出来了 MinGW-w64 项目,该项目同时支持生成 64 位和 32 位程序。
Qt 的 MinGW 版本库就是使用 MinGW-w64 项目里面的工具集生成的。
MSYS(Minimal SYStem)
另外提一下,由于 MinGW 本身主要就是编译链接等工具和头文件、库文件,并不包含系统管理、文件操作之类的 Shell 环境,这对希望用类 Unix 命令的开发者来说还是不够用的。所以 MinGW 官方又推出了 MSYS(Minimal
SYStem),相当于是一个部署在 Windows 系统里面的小型 Unix 系统环境,移植了很多 Unix/Linux 命令行工具和配置文件等等,是对 MinGW 的扩展。
MSYS 对于熟悉 Unix/Linux 系统环境或者要尝试学习 Unix/Linux 系统的人都是一种便利。MSYS 和 MinGW 的安装升级都是通过其官方的 mingw-get 工具实现,二者是统一下载安装管理的。
对于 MinGW-w64 项目,它对应的小型系统环境叫 MSYS2(Minimal SYStem 2),MSYS2 是 MSYS 的衍生版,不仅支持 64 位系统和 32 位系统,还有自己的独特的软件包管理工具,它从 Arch Linux 系统里移植了 pacman 软件管理工具,所以装了 MSYS2 之后,可以直接通过 pacman 来下载安装软件,而且可以自动解决依赖关系、方便系统升级等。装了 MSYS2 之后,不需要自己去下载MinGW-w64,可以直接用 pacman 命令安装编译链接工具和 git 工具等。
CMake