Xcode - 复制目标 - 新目标无法构建

6

我正在使用10.6.6(10J521)上的Xcode 3.2.5,现在是10J537。

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

除了源文件和资源文件之外,该目标还包含一个“复制文件”构建阶段,用于将“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”的“链接二进制文件和库”阶段中,我将链接位置设置为上述Sparkle.framework。对链接二进制文件进行“获取信息”的报告表明它是两个目标的成员。 - 如果我右键单击副本目标中“复制文件”构建阶段中的Sparkle.framework文件,并选择“在Finder中显示”,则会显示正确的Sparkle.framework文件。所需文件存在于Sparkle.framework / Headers / Sparkle.h。 - 如果我切换回原始的“MyApp”目标,则可以成功构建和运行。
这里我是否明显做错了什么?谢谢。
[编辑-已解决]

你的新目标是否实际上链接了Sparkle框架? - Jason Coco
Jason,好的。我已经编辑了原帖以包含更多信息。干杯。 - SirRatty
3个回答

14

我查看了每个被认为是相同的目标的构建设置。

在“框架搜索路径”下,第一个目标具有以下内容:

$(inherited) "$(SRCROOT)"

但是复制的目标具有以下路径:

$(inherited) \"$(SRCROOT)\"

看起来Xcode在复制过程中错误地转义了路径。糟糕。


这是一个令人讨厌且难以捉摸的错误。你向苹果公司提交了报告吗? - radven
1
这个 bug 在 XCode 4 中仍然存在。 - DougW
非常感谢!我实际上卸载了XCode 4并回到了3.2.6,因为只有这样才能避免相同的问题... - Mark

0

我知道你已经自己解决了这个问题,但我想分享一下我的解决方法(因为我也遇到过几次)。我总是能够通过删除相关文件并重新创建来消除此错误。我不知道为什么这样做有效...但是,像XCode这样的工具经常会有一些神秘的操作。


0

在12.5版本中,构建阶段复制仍然存在问题!它只会复制一些源目标的构建阶段。这是多么糟糕的IDE啊。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接