【问题标题】:Static Library Dependency Must Be "Cleaned" Each Build每次构建都必须“清理”静态库依赖项
【发布时间】:2013-07-25 13:44:41
【问题描述】:

我正在同时为 OSX 和 iOS 创建游戏。我有一个包含 3 个项目的工作区:

  1. CORE 是一个具有 2 个目标的静态库:一个用于 OSX,一个用于 iOS。它包含所有代码的 99.99%。
  2. OSX 是一个使用该库并构建 OSX 应用程序的项目
  3. iOS 是一个使用该库并构建 iOS 应用程序的项目

OSX 项目完美运行。我按下构建,它运行良好。

奇怪的是,CORE 项目针对 iOS 目标显示了一个红色产品。我已将此目标链接到 iOS 项目,它工作正常...除非我对 CORE 库进行更改,更改不会反映在应用程序,除非我先清理 iOS 项目。换句话说,即使我明确地重建 CORE 库,它仍然无法工作;我必须在核心更改生效之前清理 iOS 项目

截图:

所需的功能:就像使用 OSX 应用程序一样,我应该只需按“构建”,对 CORE 库的任何更改都将被编译并部署到应用程序中。

问题似乎在于 XCode THINKS libAftermathCore-iOS.a 文件 应该 的位置:

不是它实际构建的位置:

请注意,文件夹名称对于 OSX 库是正确的,但对于 iOS 则不正确。

【问题讨论】:

    标签: iphone xcode macos


    【解决方案1】:

    您可能应该将您的 lib 添加到 AftermathIOS 目标依赖项:单击项目 -> 选择目标 -> 构建阶段 -> 目标依赖项

    【讨论】:

    • 我应该提到我试过了,对不起。当我单击 Target Dependencies 中的 + 按钮时,出现的窗口中没有任何内容(它显示“无过滤结果”)。
    • 那么 OSX 项目呢?有这种依赖吗?
    • 没有。 OSX 项目没有列出依赖项。此外,这不是依赖构建问题。即使我重建 iOS 库,问题仍然存在。修复它的唯一方法是清理 iOS 库。然后,我构建什么并不重要,它从那里开始工作。
    • 您可以创建一个临时 hack:使自定义构建阶段“运行脚本”并从那里清理您的库。
    • 嗯,看起来问题是库没有在 iOS 上构建到正确的文件夹中,但它在 OSX 上。我已经用截图更新了 OP。
    【解决方案2】:

    好的,我最终通过更改 Per-configuration Build Products Path 解决了这个问题:

    到这里:

    这意味着所有 4 个目标都构建到同一个文件夹中:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-15
      • 2016-01-06
      • 1970-01-01
      相关资源
      最近更新 更多