清除 Xcode 链接器设置的方法有哪些?
What are the ways to clear out Xcode linker settings?
我的问题:
Xcode (7.2.1) 是否有可能错误地保留对 link 不再存在于项目中的框架的指令?如果是,如何解决?
我的问题:
我正在尝试使用 Cocos2d-x v3.10 和最新版本的 Soomla 模块(尤其是 Soomla 配置文件)编译一个 iOS 项目。其他 Soomla 模块在我实现配置文件之前工作,但是一旦我添加 -lSoomlaiOSProfileFacebook
作为 linker 标志,我就会收到编译时错误:
ld: framework not found FBSDKCoreKit for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
我对此感到非常困惑,因为 FBSDKCoreKit
是 Facebook iOS SDK 版本 4.0 及更高版本中使用的框架,而 Soomla Profile 仅配置为使用 3.0(因此不应该不会要求 FBSDKCoreKit
)。我已将 FacebookSDK
框架版本 3.23.3 集成到项目中。我的项目中没有任何内容应该引用或要求 FBSDKCoreKit
。
我唯一可能的解释是,有一次我的项目中确实有 FBSDKCoreKit
,然后我才知道 Soomla 无法使用它,并且我成功触发了几个在 Facebook 中注册的操作开发人员门户(这不是使用 Soomla 命令完成的,而是在 -lSoomlaiOSProfileFacebook
库 linked 之前完成的)。我觉得 Xcode 可能出于某种原因还保留着对 FBSDKCoreKit
的一些记忆,即使该框架已与所有引用一起被完全删除。
总而言之:Soomla 应该寻找 FacebookSDK
,而不是 FBSDKCoreKit
。
我尝试过的东西:
- 擦除整个项目并克隆 git 在 Facebook 尝试实施之前的提交
- 正在擦除 Xcode 派生数据(来自 Xcode 和直接来自 Finder)
- 正在清理项目
- 删除 Facebook SDK 并重新安装
- 删除所有 Soomla 模块并重新安装 1) 从项目中删除对 Soomla 项目和库的引用,2) 从 Cocos2d-x 目录中删除 Soomla 模块并用新下载的版本替换它们(这包括引用的库通过
-lSoomlaiOSProfileFacebook
),将它们重新添加到项目中(Xcode 项目文件和静态库)
所有这些都已经尝试过多次,我在编译尝试之前至少完成了每一步。
我确信项目中没有任何东西应该要求 FBSDKCoreKit
,这让我想知道这是否是一个 Xcode 问题。对于这种性质的问题,是否有任何后续步骤?
参考资料
- Paste of the compile error output
- Post on Soomla forums regarding this issue。此 post 还包括确认
FBSDKCoreKit
库不在我的项目中。
我很乐意提供您认为相关的更多信息。任何反馈或故障排除提示将不胜感激。
Occam's Razor 引导我 grep
Soomla Profile 项目提供的所有静态库。事实证明,从 1.4.0(目前是 1.8.1)开始,所提供的二进制文件毕竟查询了错误的 SDK。我已经打开了一个 PR,但由于教会我检查 .pbxproj 文件的精彩回复,我一直在问这个问题。
我的问题:
Xcode (7.2.1) 是否有可能错误地保留对 link 不再存在于项目中的框架的指令?如果是,如何解决?
我的问题:
我正在尝试使用 Cocos2d-x v3.10 和最新版本的 Soomla 模块(尤其是 Soomla 配置文件)编译一个 iOS 项目。其他 Soomla 模块在我实现配置文件之前工作,但是一旦我添加 -lSoomlaiOSProfileFacebook
作为 linker 标志,我就会收到编译时错误:
ld: framework not found FBSDKCoreKit for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
我对此感到非常困惑,因为 FBSDKCoreKit
是 Facebook iOS SDK 版本 4.0 及更高版本中使用的框架,而 Soomla Profile 仅配置为使用 3.0(因此不应该不会要求 FBSDKCoreKit
)。我已将 FacebookSDK
框架版本 3.23.3 集成到项目中。我的项目中没有任何内容应该引用或要求 FBSDKCoreKit
。
我唯一可能的解释是,有一次我的项目中确实有 FBSDKCoreKit
,然后我才知道 Soomla 无法使用它,并且我成功触发了几个在 Facebook 中注册的操作开发人员门户(这不是使用 Soomla 命令完成的,而是在 -lSoomlaiOSProfileFacebook
库 linked 之前完成的)。我觉得 Xcode 可能出于某种原因还保留着对 FBSDKCoreKit
的一些记忆,即使该框架已与所有引用一起被完全删除。
总而言之:Soomla 应该寻找 FacebookSDK
,而不是 FBSDKCoreKit
。
我尝试过的东西:
- 擦除整个项目并克隆 git 在 Facebook 尝试实施之前的提交
- 正在擦除 Xcode 派生数据(来自 Xcode 和直接来自 Finder)
- 正在清理项目
- 删除 Facebook SDK 并重新安装
- 删除所有 Soomla 模块并重新安装 1) 从项目中删除对 Soomla 项目和库的引用,2) 从 Cocos2d-x 目录中删除 Soomla 模块并用新下载的版本替换它们(这包括引用的库通过
-lSoomlaiOSProfileFacebook
),将它们重新添加到项目中(Xcode 项目文件和静态库)
所有这些都已经尝试过多次,我在编译尝试之前至少完成了每一步。
我确信项目中没有任何东西应该要求 FBSDKCoreKit
,这让我想知道这是否是一个 Xcode 问题。对于这种性质的问题,是否有任何后续步骤?
参考资料
- Paste of the compile error output
- Post on Soomla forums regarding this issue。此 post 还包括确认
FBSDKCoreKit
库不在我的项目中。
我很乐意提供您认为相关的更多信息。任何反馈或故障排除提示将不胜感激。
Occam's Razor 引导我 grep
Soomla Profile 项目提供的所有静态库。事实证明,从 1.4.0(目前是 1.8.1)开始,所提供的二进制文件毕竟查询了错误的 SDK。我已经打开了一个 PR,但由于教会我检查 .pbxproj 文件的精彩回复,我一直在问这个问题。