【发布时间】:2018-04-26 05:46:26
【问题描述】:
我可以轻松编辑 Makefile 以添加自定义步骤。例如,我有一行:
first: release
如果我把它改成
first: pre-build release
然后我就可以在“pre-build:”标签后面放置一些操作了。
问题是如何将相应的指令写入.pro文件,强制qmake工具在Makefile中生成需要的行?
【问题讨论】:
我可以轻松编辑 Makefile 以添加自定义步骤。例如,我有一行:
first: release
如果我把它改成
first: pre-build release
然后我就可以在“pre-build:”标签后面放置一些操作了。
问题是如何将相应的指令写入.pro文件,强制qmake工具在Makefile中生成需要的行?
【问题讨论】:
您可以使用QMAKE_EXTRA_TARGETS 变量将自定义目标添加到生成的Makefile,类似于:
QMAKE_EXTRA_TARGETS += beforebuild
beforebuild.commands = echo Hello world!
beforebuild.CONFIG = phony
但是,您不能将此目标放在 first: all 行,除非您已修补 qmake 的源代码(考虑以下来自 makefile.cpp 的 sn-p:t << "first: " << targets.first()->target << endl )。
原则上,有可能在all(或release/debug)和您的beforebuild 目标之间产生一些依赖关系,因此beforebuild 仍将由make 自动执行,如中所述this article(俄语)。然而,由此产生的解决方案在我看来太丑陋且容易出错。
我认为简单地执行make beforebuild first(可能使用shell 脚本)要容易得多。除非您使用的是 Qt Creator,否则在这种情况下,您应该尝试上面链接中的配方。
【讨论】: