Qt从顶层调用自定义子目标

Posted

技术标签:

【中文标题】Qt从顶层调用自定义子目标【英文标题】:Qt call custom sub target from top level 【发布时间】:2017-06-20 09:29:25 【问题描述】:

我有一个使用 SUBDIRS 的 Qt 5.8 项目,其中一个子目标有一个类似于此的 custom target:

main.pro:

SUBDIRS = subtarget

subtarget.pro:

mytarget.target = .buildfile
mytarget.commands = touch $$mytarget.target
mytarget.depends = mytarget2

QMAKE_EXTRA_TARGETS += mytarget

使用 qmake 从中生成 Makefile 将正确地将我的自定义目标添加到子目标 Makefile 中。但是我想从顶层 Makefile 调用它,这样我就可以从顶层调用“make mytarget”。请注意,此自定义目标不应默认运行,只能显式运行。

【问题讨论】:

【参考方案1】:

诀窍是在顶层项目中定义一个同名的目标,并告诉 qmake 这个目标也应该调用子目标。这可以通过在 main.pro 中添加以下行来完成:

mytarget.target = .buildfile
mytarget.CONFIG += recursive
mytarget.recurse_target = .buildfile
QMAKE_EXTRA_TARGETS += mytarget

如果您有多个子项目,则此目标必须存在于所有子项目中。您可以为没有此类目标的项目创建虚拟目标,如下所示:

dummyTarget.target = .buildfile
QMAKE_EXTRA_TARGETS += dummyTarget

【讨论】:

谢谢,几乎成功了。但是我遇到了一个问题,需要虚拟对象的其他子目标设置了一些 PRE_TARGETDEPS 并且当它找不到时显然虚拟目标错误。 你能显示代码/错误日志吗?我不确定你的意思

以上是关于Qt从顶层调用自定义子目标的主要内容,如果未能解决你的问题,请参考以下文章

XamarinAndroid组件教程设置自定义子元素动画

IBOutlets/actions 和自定义子视图

UIStackView 中等宽的自定义子视图

onChange 没有为自定义子组件触发

SwiftUI GeometryReader 不会在中心布局自定义子视图

如何将自定义子视图的宽度设置为没有宽度限制的父 UIView 的 1/3?