Xcode 7.1头文件未找到。

16

在归档过程中,Xcode 7.1显示Restkit/Restkit.h未找到,但在调试中它成功地找到了头文件。这是一个旧项目,不使用cocoa pods,因此RestKit是手动添加的。尝试了许多解决方案但都没有成功。需要帮助。


有完全相同的问题。使用RestKit 0.10.3(非Cocoapods)进行开发。尝试调整搜索头文件路径,但直到现在都没有效果。也尝试了这个[https://issues.apache.org/jira/browse/CB-9656]。 - FeltMarker
问题的原因是我们在头文件搜索路径中添加了"$(BUILT_PRODUCTS_DIR)/../../Headers",它会查找build/Release-iphoneos并返回包含Restkit.h文件的Headers文件夹,但不幸的是,在xcode 7.1的归档过程中没有创建Release-iphoneos。也许你可以在这方面找到一些帮助。 - Adnan Munir SE
4个回答

19

在你的建议和这篇SO文章的帮助下,我通过在项目构建设置中添加"$(BUILD_ROOT)/../IntermediateBuildFilesPath/Headers" (递归)来解决了问题,用于发布的头文件搜索路径设置为Header Search Path。 同时将 Skip Install 设为 YES(RestKit 项目中的构建设置/部署),并做了如下更改:

#import <RestKit/RestKit.h> to "RestKit/RestKit.h"

注意。检查您的xcode偏好设置/位置选项卡中导出数据存储的位置。默认值为唯一构建位置。然后在Finder中查找IntermediateBuildFilesPath文件夹并搜索您缺少的头文件。将此文件夹添加到搜索路径中。


5
我可以确认,仅将"$(BUILD_ROOT)/../IntermediateBuildFilesPath/Headers" 添加到RELEASE中对我来说已经解决了问题。可能我没有执行额外的步骤会在之后造成其他问题,但目前看来,我的存档工作正常。 - EricWasTaken
2
我也有一个使用RestKit的遗留项目,这个方法对我也起作用了,谢谢!像Eric一样,我没有将其递归,并且不需要更改#import行。 - zai chang
太棒了!我在目标搜索头文件发布部分尝试了一下,添加了这个:$(BUILD_ROOT)/../IntermediateBuildFilesPath/Headers。 - Shobhakar Tiwari

10

我遇到了同样的问题。我在构建设置的“头文件搜索路径”中添加了以下内容,选择了非递归,并解决了我的问题:

"$(BUILD_DIR)/../IntermediateBuildFilesPath/Headers"

我不需要更改导入语法或更改任何其他构建设置。


https://forums.developer.apple.com/message/79355#79355 https://github.com/RestKit/RestKit/issues/2341 - Dalibor Filus

3

将页眉搜索路径更改为:

"$(BUILD_DIR)/../IntermediateBuildFilesPath/Headers" (non-recursive)

对我来说,这是正确的方法。对于其他子项目,您应该更改公共头文件夹路径(构建设置 > 打包)为

"../../Headers/$(TARGET_NAME)"

在子项目目标的设置中。

您,先生,救了我的命 :-) 我快要放弃了!现在一切都有意义了... - Bartserk

1
所有以上答案都是解决方案的一部分;但是,在我的情况下,我遇到了一个细节,让我困惑了一会儿。
根据上面的答案,我也通过添加以下内容更新了Header Search Paths(在Build Settings下):
"$(BUILD_DIR)/../IntermediateBuildFilesPath/Headers" (non-recursive)

但直到我意识到...

我只更新了项目,而目标仍然保留旧路径。

所以记得同时更新项目路径目标路径

另外,我不需要更改任何RestKit导入语句。


“对那个答案再补充一点”——拥有500声望,您完全有资格在其他答案下留言。如果您选择回答,至少要明确地链接到您所指的目标答案,以便于一年后清楚地表达您的意思。 - Andras Deak -- Слава Україні
@AndrasDeak,以上所有答案都涉及添加相同的搜索路径,相同的解决方案。我发现我不需要更改导入语句。 - Nico teWinkel
1
那我建议重新表述你的第一句话。也许删除第一句话,并明确现有方法对你没有起作用,你实际的答案是帖子的后半部分 :) 我虽然是个外行,但这可能会让其他人感到困惑。(只是一个建议,你可以采纳或不采纳) - Andras Deak -- Слава Україні
ps,$(BUILD_DIR) 可以替换为 $(BUILD_ROOT),正如上面的答案所使用的那样,在 Xcode 7.3 中两种方式都可以工作(它们指向相同的路径),尽管我想未来可能会有所改变。 - Nico teWinkel

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