【问题标题】:How to force update of OSX app bundle in qmake?如何在 qmake 中强制更新 OSX 应用程序包?
【发布时间】:2013-12-30 21:40:31
【问题描述】:

我编写了一个需要访问大量资源的应用程序。

我有一个与我的 .pro 文件处于同一级别的文件夹,其中包含其他包含资源的文件夹:

Project Directory
  app.pro
  Resources
    ResourceDirA
      ResourceA0.png
      ResourceA1.png
      ...
    ResourceDirB
      ResourceB0.png
      ResourceB1.png
      ...
    ...

在我的 .pro 文件中,我有代码

macx {
    resources.files = "Resources"
    resources.path = Contents/Resources
    QMAKE_BUNDLE_DATA += resources
}

当我删除构建目录并重新构建时,这工作正常。但是当我已经构建并将一个文件添加到子目录之一(ResourceA2.png 或其他东西)并重新构建时,新文件不会传输到应用程序包。

有没有办法确保检查和更新新文件,或者至少有办法在我每次构建项目时强制重新构建整个包?

【问题讨论】:

  • 您是在问是否可以在不重新运行“qmake”的情况下使用“make”来实现?
  • @LaszloPapp:不。我是说重新运行 qmake 不会复制额外的文件。

标签: macos qt


【解决方案1】:

您的问题是由于 qmake + make 组合中存在的固有限制,如果有的话,应该可以使用 qbs 解决。

它是这样工作的:

  1. qmake 扫描Resources 目录并在 Makefile 中生成复制操作

  2. make 将 Makefile 中列出的文件复制到应用程序包中

您需要按顺序运行 qmake 和 make,以找到新文件并将它们复制过来。

没有任何东西可以放在 Makefile 中,除了一个特殊的脚本,它可以检测到 Resources 文件夹中的变化并强制重新运行地震。显然,Makefile 中的操作不会复制整个文件夹,而只是复制单个文件,或者,如果任何当前已知的文件已过期,则可能会复制该文件夹。无论哪种情况,make 都会忽略新文件。

【讨论】:

    猜你喜欢
    • 2011-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-21
    • 1970-01-01
    相关资源
    最近更新 更多