【问题标题】:Xcode - SenTestingKit not foundXcode - 未找到 SenTestingKit
【发布时间】:2011-03-22 06:12:32
【问题描述】:

我在升级 xcode 版本时出现了一个问题。我使用单元测试,现在当我尝试导入 SenTestingKit (#import <SenTestingKit/SenTestingKit.h>) 时,我收到此错误:SenTestingKit/SenTestingKit.h: No such file or directory

我查看了我的构建设置,我有以下配置选项:

== Linking ==
Other Linker Flags: -framework Foundation -framework SenTestingKit -framework UIKit
Prebinding: No

== Search Paths ==
Debug Configutation: "/iphonesimulator4.0/Developer/Library/Frameworks" "/Xcode4/Library/Frameworks"

我检查了/Xcode4/Library/FrameworksSenTestingKit.framework/ 目录那里。

那么我错过了什么?

【问题讨论】:

  • Sam,所有预发布的 Apple 软件都在一个 SDK 下,所以你不能(阅读:可能不应该)能够在 Apple 开发者论坛之外讨论它。在那里发帖,提交错误。
  • Typeoneerror,您的意思是 NDA。它是一个 SDK。
  • 我明白这一切,但这通常可以回答有关 xcode 的问题。搜索路径和链接器设置也出现在 xcode 3 中。所以我编辑了这个问题,去掉了对 Xcode 4 的引用,使它成为一个“通用 xcode”问题。
  • 我遇到了同样的问题——除了我构建的框架。无论搜索路径是什么,它都找不到它们。是时候提交错误了!
  • “Abizern”创下新纪录:有史以来最搞笑的文字。更有可能在 Apple 论坛上得到答案?认真的吗?

标签: iphone objective-c xcode4


【解决方案1】:

在 XCode 中创建新的测试用例时,我遇到了同样的问题。然而,这是由于我在创建测试用例时选择了错误的目标很愚蠢。

使用“新建文件...”,测试用例被包含并使用目标应用程序设置而不是测试用例的目标进行编译。检查构建阶段选项卡并查看“编译源”披露揭示了我的特殊问题。

【讨论】:

  • 是的,这行得通。我以前这样做过,但我认为 AppCode 将其重置。如果您使用的是 AppCode,请仔细检查。
【解决方案2】:

升级到 xcode 4.3 后我遇到了这个问题。在我遇到this post 之前似乎没有任何效果。我已经有相同的搜索路径,但更改顺序解决了问题。

因此,从文章中可以看出,您的框架搜索路径中需要以下两个值,按此顺序

$(SDKROOT)/Developer/Library/Frameworks
$(DEVELOPER_LIBRARY_DIR)/Frameworks

【讨论】:

  • 那是因为 (SDKROOT)/Developer/Library/Frameworks 是 arm,$(DEVELOPER_LIBRARY_DIR)/Frameworks 是 intel
  • @velexa - 所以你的意思是第二个是不必要的还是......?无论如何,只是传达我遇到此问题的信息以及该板上的解决方案似乎很有效。
  • 我只是在解释为什么您的解决方案有效,是的,没有必要将英特尔框架构建的路径添加到 arm 目标
  • @velexa - 也许我遗漏了一些东西,但 iphone 模拟器不是手臂目标。这就是我们的目标。
  • 您在模拟器中运行的项目的目标在其架构设置下显示 arm,它不会使用 $(DEVELOPER_LIBRARY_DIR)/Frameworks 中的框架,而是 /Developer/Platforms/iPhoneSimulator.platform/ 运行时模拟器,您也可以将该路径添加到列表的末尾而没有任何效果,您的 arm 目标的 arm 框架位于 $(SDKROOT)/Developer/Library/Frameworks 中,这是您需要的唯一路径列表
【解决方案3】:

我遇到这个问题是因为我的 Xcode 安装中有一个空格:/Xcode 4.0.2

我通过将"${DEVELOPER_LIBRARY_DIR}/Frameworks"(带引号)添加到我的框架搜索路径来修复它。

【讨论】:

  • 就我而言,我还必须在 $(SDKROOT)/Developer/Library/Frameworks 周围添加引号。
  • 或者直接使用$(DEVELOPER_FRAMEWORKS_DIR_QUOTED) ;)
【解决方案4】:

对于我的框架搜索路径,我明确添加了/$(DEVELOPER_DIR)/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.1.sdk/Developer/Library/Frameworks。为模拟器和设备正确编译。

我确信存在环境变量,因此它可以跨 SDK 版本工作,所以如果我找到它们,我会更新答案。

【讨论】:

  • 这解决了我的问题。也就是说,我从该路径添加了框架,之后 Xcode 4 自动更新了框架搜索路径。我最初尝试在 $(DEVELOPER_DIR)/Library/Frameworks/ 中使用 SenTestingKit.framework,但没有成功。
【解决方案5】:

为了彻底澄清这一点,Xcode SDK 中有三个 SenTestingKit 框架,一个用于 OS X,一个用于 iOS,一个用于模拟器。

如果你对它们运行“lipo -info”,你会看到

fat 文件中的架构:/Developer/Library/Frameworks/SenTestingKit.framework/Versions/A/SenTestingKit 为:x86_64 i386

fat 文件中的架构:/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk/Developer/Library/Frameworks/SenTestingKit.framework/SenTestingKit 是架构:armv7

非胖文件:/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.1.sdk/Developer/Library/Frameworks/SenTestingKit.framework/SenTestingKit 是架构:i386

【讨论】:

  • 仍然没有清除它。当您在 xcode 中选择添加框架时,它只会为您提供“SenTestingKit”选项,它不会让您选择特定的非 osx 框架。
  • 这对你来说太糟糕了 Xcode,我总是只是手动将框架文件夹从 Finder 拖到 Xcode 中,然后像 90 年代那样聚会
【解决方案6】:

您可能想要检查 Xcode 是否正在检查框架搜索路径:

【讨论】:

  • 是的。我将 ${DEVELOPER_LIBRARY_DIR}/Frameworks 添加到框架搜索路径并修复了它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-04
  • 2013-08-02
  • 1970-01-01
  • 2021-10-22
  • 2012-07-06
相关资源
最近更新 更多