macos - 如何在 qmake 中强制更新 OSX 应用程序包?

标签 macos qt

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

我有一个与我的 .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 组合中存在的固有限制,应该可以通过 qbs 解决。如果有的话。

这是它的工作原理:

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

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

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

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

关于macos - 如何在 qmake 中强制更新 OSX 应用程序包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20838639/

相关文章:

c++ - 使用 CMake-GUI 3.2.2 安装 VTK 6.2.0 和 Qt 5.4

qt - 如何在 QLIstWidgetItem 中的文本左侧设置图标?

android - 如何将 OpenCV 集成到 Qt Creator Android 项目中

java - 在 OSX 上通过 Java 访问 iSight

macos - 从 Gitlab 实例克隆时,Jenkins 在 Mac slave 上挂起

macos - 解决方法--exclude-libs在OS X的clang上不可用

MacOS:未捆绑/unix 可执行文件的版本信息

c++ - 为什么 Q_FOREACH 宏会破坏 VS2010 智能感知?

c++ - QFileDialog 使我的应用程序崩溃

macos - 在 OS X 上使用 Bash 命令生成文件 ifeq