公司注册网站官网中国国家培训网
news/
2025/10/6 5:49:05/
文章来源:
公司注册网站官网,中国国家培训网,wordpress批量注册账号,注册网站英语Qt 不是凭空产生的#xff0c;它是基于现有工具链打造而成的#xff0c;它所使用的编译器、链接器、调试器等都不是自己的#xff0c;Qt 官方只是开发了上层工具。下面我们分几个部分讲解 Qt 使用到的工具链。
GNU 工具集
在上个世纪八十年代#xff0c;计算机都是奢侈品…Qt 不是凭空产生的它是基于现有工具链打造而成的它所使用的编译器、链接器、调试器等都不是自己的Qt 官方只是开发了上层工具。下面我们分几个部分讲解 Qt 使用到的工具链。
GNU 工具集
在上个世纪八十年代计算机都是奢侈品操作系统里最著名的是 Unix 家族 当时还没有 Windows、Linux 之类的Unix 系统都是商业软件里面的应用软件也是商业软件 全是封闭的环境。 系统程序员 Richard M. Stallman (RMS) 在此环境下创立了与众不同的 GNU 项目 (GNUs Not Unix) 以及推进自由软件发展的 Free Software Foundation (FSF) 自由软件基金会。 GNU 项目是为了创建自由的类 Unix 系统也因此开发出来很多开源的系统工具其中非常著名的就是 GCC GNU Compiler CollectionGNU编译器套件。
现在我们知道GUN 开发类 Unix 系统的项目失败了但是它开发的一系列工具集却用到了后来的 Linux 内核上两者结合形成了今天的各种 Linux 发行版有兴趣的读者请转到《Linux和UNIX的关系及区别》了解更多。在 GNU 工具集里面开发时常见到的几个罗列如下这些工具通常位于 Linux 或 Unix 系统里的 /usr/bin/ 目录
工具说明gccGNU C 语言编译器。gGNU C 语言编译器。ldGNU 链接器将目标文件和库文件链接起来创建可执行程序和动态链接库。ar生成静态库 .a 可以编辑和管理静态链接库。make生成器可以根据 makefile 文件自动编译链接生成可执行程序或库文件。gdb调试器用于调试可执行程序。ldd查看可执行文件依赖的共享库扩展名 .so也叫动态链接库。
MinGW
原本 GNU 工具只在 Linux/Unix 系统里才有随着 Windows 系统的广泛使用 为了在 Windows 系统里可以使用 GNU 工具诞生了 MinGWMinimalist GNU for Windows 项目利用 MinGW 就可以生成 Windows 里面的 exe 程序和 dll 链接库。 需要注意的是MinGW 与 Linux/Unix 系统里 GNU 工具集的有些区别
MinGW 里面工具带有扩展名 .exe Linux/Unix 系统里工具通常都是没有扩展名的。MinGW 里面的生成器文件名为 mingw32-make.exeLinux/Unix 系统里就叫 make。MinGW 在链接时是链接到 *.a 库引用文件生成的可执行程序运行时依赖 *.dll而 Linux/Unix 系统里链接时和运行时都是使用 *.so 。另外 MinGW 里也没有 ldd 工具因为 Windows 不使用 .so 共享库文件。如果要查看 Windows 里可执行文件的依赖库需要使用微软自家的 Dependency Walker 工具。Windows 里面动态库扩展名为 .dllMinGW 可以通过 dlltool 来生成用于创建和使用动态链接库需要的文件如 .def 和 .lib。 MinGW 原本是用于生成 32 位程序的随着 64 位系统流行起来 从 MinGW 分离出来了 MinGW-w64 项目该项目同时支持生成 64 位和 32 位程序。Qt 的 MinGW 版本库就是使用 MinGW-w64 项目里面的工具集生成的。
MSYSMinimal SYStem
另外提一下由于 MinGW 本身主要就是编译链接等工具和头文件、库文件并不包含系统管理、文件操作之类的 Shell 环境 这对希望用类 Unix 命令的开发者来说还是不够用的。 所以 MinGW 官方又推出了 MSYSMinimal SYStem相当于是一个部署在 Windows 系统里面的小型 Unix 系统环境 移植了很多 Unix/Linux 命令行工具和配置文件等等是对 MinGW 的扩展。 MSYS 对于熟悉 Unix/Linux 系统环境或者要尝试学习 Unix/Linux 系统的人都是一种便利。MSYS 和 MinGW 的安装升级都是通过其官方的 mingw-get 工具实现二者是统一下载安装管理的。 对于 MinGW-w64 项目它对应的小型系统环境叫 MSYS2Minimal SYStem 2MSYS2 是 MSYS 的衍生版不仅支持 64 位系统和 32 位系统还有自己的独特的软件包管理工具它从 Arch Linux 系统里移植了 pacman 软件管理工具所以装了 MSYS2 之后可以直接通过 pacman 来下载安装软件而且可以自动解决依赖关系、方便系统升级等。装了 MSYS2 之后不需要自己去下载 MinGW-w64可以直接用 pacman 命令安装编译链接工具和 git 工具等。 MinGW 项目主页含 MSYS http://www.mingw.org/ MinGW-w64 项目主页 https://sourceforge.net/projects/mingw-w64/ MSYS2 项目主页 https://sourceforge.net/projects/msys2/
CMake
CMakeCross platform Make是一个开源的跨平台自动化构建工具 可以跨平台地生成各式各样的 makefile 或者 project 文件 支持利用各种编译工具生成可执行程序或链接库。 CMake 自己不编译程序 它相当于用自己的构建脚本 CMakeLists.txt叫各种编译工具集去生成可执行程序或链接库。 一般用于编译程序的 makefile 文件比较复杂自己去编写比较麻烦 而利用 CMake 就可以编写相对简单的 CMakeLists.txt 由 CMake 根据 CMakeLists.txt 自动生成 makefile然后就可以用 make 生成可执行程序或链接库。 本教程里面是使用 Qt 官方的 qmake 工具生成 makefile 文件没有用 CMake。这里之所以提 CMake是因为整个 KDE 桌面环境的茫茫多程序都是用 CMake 脚本构建的另外跨平台的程序/库如 Boost C Libraries、OpenCV、LLVM、Clang 等也都是用 CMake 脚本构建的。以后如果接触到这些东西是需要了解 CMake 的。 CMake 项目主页https://cmake.org/ KDE 项目主页https://www.kde.org/
Qt 工具集
Qt 官方的开发环境安装包里有自己专门的开发工具之前用过 qmake 命令。qmake 是 Qt 开发最核心的工具既可以生成 Qt 项目文件 .pro 也可以自动生成项目的 Makefile 文件。 这里将常用的 Qt 开发工具列表如下 工具说明qmake核心的项目构建工具可以生成跨平台的 .pro 项目文件并能依据不同操作系统和编译工具生成相应的 Makefile用于构建可执行程序或链接库。uicUser Interface Compiler用户界面编译器Qt 使用 XML 语法格式的 .ui 文件定义用户界面uic 根据 .ui 文件生成用于创建用户界面的 C 代码头文件比如 ui_*****.h 。mocMeta-Object Compiler元对象编译器moc 处理 C 头文件的类定义里面的 Q_OBJECT 宏它会生成源代码文件比如 moc_*****.cpp 其中包含相应类的元对象代码元对象代码主要用于实现 Qt 信号/槽机制、运行时类型定义、动态属性系统。rccResource Compiler资源文件编译器负责在项目构建过程中编译 .qrc 资源文件将资源嵌入到最终的 Qt 程序里。qtcreator集成开发环境包含项目生成管理、代码编辑、图形界面可视化编辑、 编译生成、程序调试、上下文帮助、版本控制系统集成等众多功能 还支持手机和嵌入式设备的程序生成部署。assistantQt 助手帮助文档浏览查询工具Qt 库所有模块和开发工具的帮助文档、示例代码等都可以检索到是 Qt 开发必备神器也可用于自学 Qt。designerQt 设计师专门用于可视化编辑图形用户界面所见即所得生成 .ui 文件用于 Qt 项目。linguistQt 语言家代码里用 tr() 宏包裹的就是可翻译的字符串开发人员可用 lupdate 命令生成项目的待翻译字符串文件 .ts用 linguist 翻译多国语言 .ts 翻译完成后用 lrelease 命令生成 .qm 文件然后就可用于多国语言界面显示。qmlscene在 Qt 4.x 里是用 qmlviewer 进行 QML 程序的原型设计和测试Qt 5 用 qmlscene 取代了旧的 qmlviewer。新的 qmlscene 另外还支持 Qt 5 中的新特性 scenegraph 。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/929015.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!