首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Qt子目录项目中设置构建顺序

如何在Qt子目录项目中设置构建顺序
EN

Stack Overflow用户
提问于 2012-06-18 16:39:51
回答 2查看 8.6K关注 0票数 18

我有一个包含5-6个库和一个可执行文件的项目。可执行文件依赖于库,一些库依赖于其他库。如何指定构建顺序,以便在需要依赖项之前构建依赖项?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-18 17:59:46

好的。我发现solution.Just add按正确的顺序配置和背诵了子目录

代码语言:javascript
复制
CONFIG += ordered

SUBDIRS += Utility GraphicModule PackingLib Core GameProto

对我来说,这个工作很好

票数 10
EN

Stack Overflow用户

发布于 2015-04-28 22:46:06

更新:(2021年2月)

请根据此新信息使用下面(旧)答案中的建议。

虽然这个问题很久以前就得到了回答和接受,但我觉得有必要添加另一个答案;老实说,我认为还有一个更好的答案。

我认为CONFIG += ordered是有害的,是一个坏习惯。这可能是qmake开发人员过早引入的东西。有strong opponents可以使用它。缺点是:

  1. it define,它只是命名了一个构建顺序
  2. 它缩短了多核构建时间
  3. 它阻止了Qt开发人员的依赖

因此,我建议对您的项目文件进行如下更改:

代码语言:javascript
复制
TEMPLATE = subdirs

SUBDIRS += Utility GraphicModule PackingLib Core GameProto

GameProto.depends = Core
Core.depends = PackingLib
PackingLib.depends = GraphicModule
GraphicModule.depends = Utility

这样就清楚地定义了依赖关系。您还可以考虑其他更复杂的依赖层次结构,这些依赖层次结构以这种方式是可能的,而使用构建顺序是绝对不可能的。

不幸的是,当涉及到具有深厚的子项目层次结构的大型项目时,qmake不是最好的工具。在较大的项目中看到的问题如下:

  • 无法为hierarchy
  • Run qmake中更高级别的子项目定义依赖关系执行
  • 编译时间很长,因为这些依赖关系处理不当,而且有太多不必要的编译步骤

无法正确计算子项目依赖关系,因此必须单独编译子项目

解决这些问题的方法主要有两种:

  • 将项目重写为平面层次结构。所有的可执行文件、静态和动态库都应该在最顶层。只对你绝对无法避免的子项目使用两个或更多的级别。(例如由静态库组成的动态库)这将导致更短的qmake运行时间和更短的编译时间。然而,即使这种方法在times.
  • Change上也可能失败,无法使用不同的make工具,比如cmake。我是认真的。Qt Creator是一个成熟的产品,其内部对qmake.

的支持可与Cmake相媲美

由于qmake的众所周知的问题,Qt公司已经决定引入一个新的make工具QBS。然而,这个工具的使用并不像它给人的第一印象那样简单。从qmake过渡到QBS并非易事,尤其是对于更复杂的项目。QBS语言的类Javascript语法不容易掌握,文档也很少。

我只有另外两个工具可以替代qmake

  • CMake,著名的build tool.
  • meson,是一个开源的构建系统,它意味着既要非常快,更重要的是,要尽可能地对用户友好。
票数 34
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11079398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档