如何在不重新制作所有目标的情况下使用 qmake 添加自定义构建步骤?
How to add a custom build step with qmake without re-making all targets?
这是一个添加自定义构建步骤的简单示例:
mytarget.commands = @echo Testing123
QMAKE_EXTRA_TARGETS += mytarget
PRE_TARGETDEPS += mytarget
这有效,并按预期打印消息。但是,它还会在我每次构建时重新制作项目中的所有目标,这需要几分钟。
如果我取出 PRE_TARGETDEPS += mytarget
,则不会打印任何消息,并且构建很快就会成功,没有任何更改。但是我需要打印消息。
我需要一个预构建步骤来执行,但我不希望在它们的依赖关系没有改变的情况下重新制作任何其他目标。我怎样才能用 qt 实现这个?
您必须在磁盘上有一个文件才能使其正常工作:
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
这是一个添加自定义构建步骤的简单示例:
mytarget.commands = @echo Testing123
QMAKE_EXTRA_TARGETS += mytarget
PRE_TARGETDEPS += mytarget
这有效,并按预期打印消息。但是,它还会在我每次构建时重新制作项目中的所有目标,这需要几分钟。
如果我取出 PRE_TARGETDEPS += mytarget
,则不会打印任何消息,并且构建很快就会成功,没有任何更改。但是我需要打印消息。
我需要一个预构建步骤来执行,但我不希望在它们的依赖关系没有改变的情况下重新制作任何其他目标。我怎样才能用 qt 实现这个?
您必须在磁盘上有一个文件才能使其正常工作:
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