【问题标题】:Xcode - duplicate Target - new Target fails to buildXcode - 重复目标 - 新目标无法构建
【发布时间】:2011-05-31 10:07:37
【问题描述】:

在 10.6.6 (10J521) 和现在的 10J537 上使用 Xcode 3.2.5。

我有一个包含 1 个目标的 Xcode 项目:“MyApp”。它构建并成功运行。

与源文件和资源文件一样,Target 包含一个“Copy Files”构建阶段,该阶段将“Sparkle.framework”复制到其中。框架与项目位于同一目录中。

我想复制这个目标。采取的步骤:

  • 是否“清除所有目标”。

  • 在 Xcode 中右键单击“MyApp”目标,然后选择“复制”。

  • 将复制的目标重命名为“MyAppTarget2”。

  • 从左上角的弹出菜单中选择“MyAppTarget2”作为活动目标。

  • “构建”了。

问题:

error: Sparkle/Sparkle.h: No such file or directory

在线:

#import <Sparkle/Sparkle.h>  // In MyAppDelegate.mm

这令人费解!更多信息:

  • 每个构建步骤似乎都已在复制的目标中复制,包括“复制文件”阶段。

  • Sparkle.framework 本身存在于项目的文件夹中。

  • 在“MyApp”和“MyAppTarget2”的“Link Binaries with Library”阶段,我将链接到上述位置的 Sparkle.framework。链接二进制文件上的“获取信息”报告它是两个目标的成员。

  • 如果我在复制目标的“复制文件”构建阶段右键单击 Sparkle.framework 文件,并选择“在 Finder 中显示”,则会显示正确的 Sparkle.framework 文件。所需文件位于 Sparkle.framework/Headers/Sparkle.h

  • 如果我切换回原来的“MyApp”目标,它会成功构建并运行。

我在这里做明显错误的事情吗?谢谢。

[编辑 - 已解决]

【问题讨论】:

  • 你的新目标是否真的链接了 Sparkle 框架?
  • 杰森,是的。我已经编辑了 OP 以包含更多信息。干杯。

标签: xcode duplicates target


【解决方案1】:

我查看了每个所谓相同目标的构建设置。

在“框架搜索路径”下,第一个目标是这样的:

$(inherited) "$(SRCROOT)"

但是复制的目标有这个路径:

$(继承的)\"$(SRCROOT)\"

Xcode 似乎在复制过程中错误地转义了路径。哎哟。

【讨论】:

  • 这是一个令人讨厌且晦涩难懂的错误。您是否向 Apple 提交了报告?
  • 这个错误在 XCode 4 中仍然存在
  • 非常感谢!我实际上卸载了 XCode 4 并移回 3.2.6,因为这只是为了遇到同样的问题......
【解决方案2】:

我知道你已经自己解决了这个问题,但我想我会分享我对这个问题的解决方法(因为我已经发生过好几次了)。我总是能够通过删除有问题的文件并重新创建它来摆脱这个错误。我不知道为什么会这样……但是,就像 XCode 的情况一样,似乎有一些巫毒教在起作用。

【讨论】:

    【解决方案3】:

    构建阶段副本在 12.5 中仍然被破坏!它只复制一些源目标构建阶段。多么糟糕的 IDE。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-02
      • 2023-01-19
      • 2013-10-18
      • 1970-01-01
      • 2014-09-06
      相关资源
      最近更新 更多