首页 > 解决方案 > qmake 可以在链接之前删除以前构建的应用程序包吗?

问题描述

我正在使用qmake构建 macOS 应用程序,对于我的发布版本,我正在运行它macdeployqt,然后将应用程序代码签名作为发布链接步骤(使用QMAKE_POST_LINK)。

但是,如果之前构建的构建目录中已经存在一个应用程序包,那么macdeployqt再次运行它会产生警告,有时还会产生错误,例如项目的依赖关系发生变化时。此外,qmake它还不够聪明,无法检测到应用程序包中包含的文件何时已更改或不再需要,例如复制到其Resources文件夹中的文件。

因此,如果应用程序包存在,我想qmake在构建开始时删除它,但保留其他构建工件(如目标文件),这样我就不必每次都进行完整构建。

到目前为止,我已经尝试通过QMAKE_PRE_LINK将其设置为来删除应用程序rm -rf $${TARGET}.app,但显然它不会等待此变量中的命令在组装应用程序包之前完成执行,因此使用它删除以前构建的应用程序包将导致由于文件被意外删除,链接失败。

我也尝试过这个问题中提到的方法,但由于完全相同的原因失败了——我定义的目标将与所有其他目标同时运行,并且在qmake尝试组装应用程序包时会删除文件。

有没有办法做到这一点?

标签: macosqtqmake

解决方案


推荐阅读