创建了新的 XCode 配置和方案 - 链接器突然失败

Posted

技术标签:

【中文标题】创建了新的 XCode 配置和方案 - 链接器突然失败【英文标题】:Created new XCode Configuration and Scheme - linker is suddenly failing 【发布时间】:2016-09-21 20:31:14 【问题描述】:

一个新的 XCode 项目具有调试和发布配置。我在“ProjectName > Info”下添加了一个名为“development”的新名称,它现在是“debug”的副本。

我想为在开发模式下构建应用程序创建一个新方案,所以我复制了“Projectname”方案并将其命名为“DevelopmentScheme”。

我将“运行”和“存档”的构建配置设置为我创建的新“开发”配置。

我仍然能够构建原始方案。

当项目配置了开发方案时,我还能够构建所有必需的库,但是当我进入链接阶段时,我得到了错误:

ld: library not found for -lRNCookieManagerios clang: error: linker command failed with exit code 1 (use -v to see invocation)

对于 iOS 开发来说相对较新,我不太确定可能是什么问题。由于我复制了所有内容,这不应该意味着它们的行为方式相同吗?对原始方案和新方案之间可能有什么不同的想法?

【问题讨论】:

【参考方案1】:

问题在于 Xcode 会期望在以您的自定义配置命名的文件夹中找到库。您可以将自定义配置添加到您使用的每个库中,或者最好按照以下步骤使其使用通过发布配置构建的库。

步骤:

选择您的目标 打开构建设置选项卡 搜索“库搜索路径” 您会在 Debug and Release 旁边看到您的新配置名称 双击新配置名称旁边的空格 输入"$(BUILD_DIR)/Release$(EFFECTIVE_PLATFORM_NAME)" 将递归设置为真。

退出对话框,您应该会看到:

(inspired by this post)

【讨论】:

感谢您的启发。我正在构建一个 react-native 项目,我所做的是将 Per-configuration Build Products PathPer-configuration Intermediate Build Files Path 都更改为 $(PROJECT_TEMP_DIR)/Release$(EFFECTIVE_PLATFORM_NAME)。花了我几个小时,谢谢 Xcode。 完美 - 这解决了添加新方案会破坏事情的问题。也许 react-native 应该添加一个 'new-scheme' CLI cmd 来为我们完成所有这些工作(并不是说那里有很多 - 但以后可能需要更多的东西) 对于那些在 react-native 项目中苦苦挣扎的人,我发现这个指南非常有用:github.com/microsoft/react-native-code-push/blob/master/docs/…。还可以查看此文档以了解 XCode 11 中的新更改,以及是否还有 pod 依赖项:github.com/microsoft/react-native-code-push/issues/1782【参考方案2】:

Xcode 8.3.2 需要一些不同的更改。

要使其正常工作,您需要为您的自定义构建配置更改 Per-configuration Build Products Path。例如,我有一个 Internal 构建配置。在那个字段中,我输入了$(BUILD_DIR)/Release$(EFFECTIVE_PLATFORM_NAME),而不是$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME),现在它可以工作了:)。

【讨论】:

编辑必须超过 6 个字符,这是一个微不足道的字符更正:它是按配置构建产品路径 :) 您是否遇到过“确保您正在运行打包服务器或在应用程序包中包含 .jsbundle 文件”的问题。 ? 是的.. 我只是停止并启动打包程序和项目。它不会经常让我烦恼到试图修复它。我知道那很糟糕,但在那之前我需要解决其他问题。 尝试了您的解决方案....但我面临的问题是所有方案都在 ~/Library/...../Build/Products 文件夹内的单个文件夹(发布)中构建...是否可以根据所选方案将不同的构建存在于不同的文件夹中并成功链接库?请帮忙

以上是关于创建了新的 XCode 配置和方案 - 链接器突然失败的主要内容,如果未能解决你的问题,请参考以下文章

Swift 编译器 - 代码生成

FIRApp 链接器错误 ["_OBJC_CLASS_$_FIRApp"]

Xcode 5 上的 XPC 测试包

配置文件状态无效(由 XCode 管理)

Xcode代码符号错误[重复]

Xcode XCTestCase 根本不运行