我有一个包含5-6个库和一个可执行文件的项目。可执行文件取决于库,某些库依赖于其他库。如何指定构建顺序,以便在需要之前构建依赖项?
答案 0 :(得分:29)
虽然很久以前这个问题已得到回答和接受,但我觉得有必要再加上一个答案;老实说,我认为有一个更好的答案。
我认为CONFIG += ordered
是有害的,也是一种坏习惯。这可能是qmake开发人员过早介绍的东西。它的使用有strong opponents。缺点是:
- 它阻止Qt开发人员implementing meaningful features
醇>
因此,我建议您更改项目文件,如下所示:
TEMPLATE = subdirs
SUBDIRS += Utility GraphicModule PackingLib Core GameProto
GameProto.depends = Core
Core.depends = PackingLib
PackingLib.depends = GraphicModule
GraphicModule.depends = Utility
这种方式明确定义了依赖关系。您还可以考虑其他更复杂的依赖层次结构,这种层次结构可能采用这种方式,而且构建顺序绝对不可能。
更新:(2017年6月21日)
不幸的是,qmake
并不是具有深层子项目层次结构的大型项目的最佳工具。较大项目出现的问题是:
Run qmake
需要很长时间才能执行qmake
无法正确计算子项目依赖项,这使得必须单独编译子项目解决这些问题主要有两种方法:
qmake
运行时间和更短的编译时间。但是,即使这种方法有时也会失败。 cmake
。认真。 Cmake
是一个成熟的产品,Qt Creator中的支持与qmake
相当。<强>注释:强>
由于qmake
众所周知的问题,Qt公司已经决定引入新的制作工具QBS
。但是,使用此工具并不像第一次展示时那样简单。从qmake
到QBS
没有简单的过渡,特别是对于更复杂的项目。 QBS
语言的类Javascript语法不容易掌握,文档很少。
恕我直言中只有两种其他可用的工具可以取代qmake
:
答案 1 :(得分:9)
确定。我找到了解决方案。只需将订购添加到CONFIG并按正确的顺序记下子目录
CONFIG += ordered
SUBDIRS += Utility GraphicModule PackingLib Core GameProto
对我来说,这项工作很好