Qt公司
在不久的将来,预计社区将创建一个独立项目来继续开发 Qbs,其命运将取决于独立开发者对相关组装系统的兴趣。 由于推广Qbs需要额外的投资和高昂的成本,Qt公司停止了对Qbs的开发。
让我们回想一下,要构建 Qbs,需要 Qt 作为依赖项,尽管 Qbs 本身旨在组织任何项目的组装。 Qbs 使用 QML 语言的简化版本来定义项目构建脚本,它允许您定义相当灵活的构建规则,可以连接外部模块、使用 JavaScript 函数以及创建自定义构建规则。
Qbs 不生成 makefile,并独立控制编译器和链接器的启动,根据所有依赖项的详细图表优化构建过程。 项目中有关结构和依赖关系的初始数据的存在使您可以有效地并行执行多个线程中的操作。
Qbs 1.13 的主要创新:
- 添加了在项目中使用 pkg-config 模块的功能,使用与 Qbs 模块相同的依赖关系处理机制。 例如,如果您的系统有一个基于 pkg-config 构建 OpenSSL 的包,要在 Qbs 项目中使用它,只需添加 'Depends { name: "openssl" }';
- 实现了可用 Qt 模块的自动检测。 开发人员不再需要使用 setup-qt 命令创建带有模块路径的配置文件;依赖项中指定的所有 Qt 模块都将自动配置;
- 添加了工具来控制在单个命令级别并行运行的组装任务的数量。 例如,链接会产生大量 I/O 负载并消耗大量 RAM,因此链接器需要与编译器不同的启动设置。 现在可以使用命令“qbs —job-limits linker:2,compiler:8”来设置单独的设置;
- 脚本语言已发生更改。 现在可以定义规则,而无需指定输出存根文件,并且无需在项目文件开头使用“import qbs”指令。 Application、DynamicLibrary 和 StaticLibrary 元素中添加了新的 install 和 installDir 属性,以便更方便地安装可执行文件;
- 添加了对链接描述文件递归扫描的支持
GNU 链接器; - 对于 C++ 语言,实现 cpp.linkerVariant 属性以强制使用 ld.gold、ld.bfd 或 lld 链接器;
- Qt 引入了 Qt.core.enableBigResources 属性来创建大型 Qt 资源
- 建议使用通用的 Application 类型,而不是过时的 AndroidApk 元素;
- 添加了基于自动测试创建测试的模块;
- 添加了 texttemplate 模块,其功能类似于 qmake 中的 QMAKE_SUBSTITUTES;
- 添加了对 C++ 和 Objective-C 的 Protocol Buffers 格式的初始支持。
来源: opennet.ru