【问题标题】:qmake: custom step for each make callqmake:每个 make 调用的自定义步骤
【发布时间】:2018-04-26 05:46:26
【问题描述】:

我可以轻松编辑 Makefile 以添加自定义步骤。例如,我有一行:

first: release

如果我把它改成

first: pre-build release

然后我就可以在“pre-build:”标签后面放置一些操作了。

问题是如何将相应的指令写入.pro文件,强制qmake工具在Makefile中生成需要的行?

【问题讨论】:

    标签: qt qt5 qmake


    【解决方案1】:

    您可以使用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,否则在这种情况下,您应该尝试上面链接中的配方。

    【讨论】:

    • 我同意在这种情况下我们不应该修补 qmake。虚假的额外目标和 shell 脚本效果很好。在我的简单案例中,shell 脚本在不使用 phony 的情况下也可能会有所帮助,但是通常(将所有路径和构建变量保存在一个地方)最好使用额外的目标,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-12
    • 1970-01-01
    • 2017-07-23
    • 2016-10-03
    • 1970-01-01
    相关资源
    最近更新 更多