【问题标题】:Get qmake to execute shell script after build finished on Mac在 Mac 上构建完成后获取 qmake 以执行 shell 脚本
【发布时间】:2026-02-24 02:30:02
【问题描述】:

在我的发布构建完成后,我想运行一个脚本。

我发现了这个问题How to execute shell command after compile finished from .pro in QT?,但答案对我不起作用。我尝试将各种修改添加到我的 .pro 文件中:

CONFIG(release, debug|release) {
    mytarget.target = ./MyScript.sh
    mytarget.commands = touch $$mytarget.target

    QMAKE_EXTRA_TARGETS +=mytarget
    QMAKE_POST_LINK += mytarget
}

但这总是会导致“:-1: error: mytarget: No such file or directory”。路径正确,“MyScript.sh”在命令行中运行良好。

由于这对其他人有效,我想我做错了什么。我在 Mac 上使用 Qt 4.7.2。

【问题讨论】:

    标签: qt qmake post-build-event


    【解决方案1】:

    路径是相对于构建目录的。如果您的脚本不在构建目录中,则必须更改路径。 尝试使用 ../MyScript.sh

    你为什么使用目标?如果您的唯一意图是在构建后执行 MyScript.sh,则只需

    QMAKE_POST_LINK += ./MyScript.sh
    

    【讨论】:

    • 我会尝试(现在不能),但我认为这不是问题所在。 “MyScript.sh”与我的 Forms 目录位于同一级别,其中包含一些在其他地方使用的头文件。由于“INCLUDEPATH += ./Forms”似乎正在发挥作用,我认为“./MyScript.sh”是正确的。
    • 如果您想确定这一点,请尝试编写:“QMAKE_POST_LINK = pwd”。
    • @Galadrius Krunthar:INCLUDEPATH 变量将更改发送给编译器以查找头文件的包含路径。它不会改变 makefile 查找相关文件的位置 - 您必须手动输入路径。
    • 我修复了路径,只使用了没有目标的 QMAKE_POST_LINK,然后它终于奏效了。