首页 > 解决方案 > 如何在不重新制作所有目标的情况下使用 qmake 添加自定义构建步骤?

问题描述

这是添加自定义构建步骤的简单示例:

mytarget.commands = @echo Testing123
QMAKE_EXTRA_TARGETS += mytarget
PRE_TARGETDEPS += mytarget

这有效,并按预期打印消息。但是,它还会在我每次构建时重新制作我项目中的所有目标,这需要几分钟。

如果我取出PRE_TARGETDEPS += mytarget,则不会打印任何消息,并且构建会快速成功,无需更改。但我需要打印消息。

我需要一个预构建步骤来执行,但如果它们的依赖关系没有改变,我不希望重新制作任何其他目标。我怎样才能用 qt 做到这一点?

标签: qtqmake

解决方案


您必须在磁盘上有一个文件才能使其正常工作:

PRETARGET = .pretarget

!exists($$OUT_PWD/$$PRETARGET):system(touch $$OUT_PWD/$$PRETARGET)
$${PRETARGET}.depends = FORCE # or $${PRETARGET}.CONFIG = phony
$${PRETARGET}.commands = @echo -e \"[\\e[1m\\e[32mTARGET\\e[0m] $$OUT_PWD/$(DESTDIR_TARGET)\"
QMAKE_EXTRA_TARGETS += $$PRETARGET
PRE_TARGETDEPS += $$PRETARGET

推荐阅读