qmake:每个 make 调用的自定义步骤
qmake: custom step for each make call
我可以轻松编辑 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
: t << "first: " << targets.first()->target << endl
).
原则上,可以在 all
(或 release
/ debug
)和您的 beforebuild
目标之间引起一些依赖,因此 beforebuild
会仍然由 make
自动执行,如 this article(俄语)中所述。然而,最终的解决方案在我看来太丑陋且容易出错。
我认为简单地执行 make beforebuild first
(可能使用 shell 脚本)要容易得多。除非您使用的是 Qt Creator,否则在这种情况下您应该尝试上面 link 中的方法。
我可以轻松编辑 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
: t << "first: " << targets.first()->target << endl
).
原则上,可以在 all
(或 release
/ debug
)和您的 beforebuild
目标之间引起一些依赖,因此 beforebuild
会仍然由 make
自动执行,如 this article(俄语)中所述。然而,最终的解决方案在我看来太丑陋且容易出错。
我认为简单地执行 make beforebuild first
(可能使用 shell 脚本)要容易得多。除非您使用的是 Qt Creator,否则在这种情况下您应该尝试上面 link 中的方法。