在 Xcode 中指定子项目的配置

Posted

技术标签:

【中文标题】在 Xcode 中指定子项目的配置【英文标题】:Specifying a subproject's Configuration in Xcode 【发布时间】:2010-12-09 13:30:28 【问题描述】:

我有一个 Xcode 项目 (A) 引用了另一个项目 (B)。默认情况下(据我所知)Xcode 将隐式构建与A 目标配置匹配的B 依赖项的配置(例如,“调试”)。但是,如果我想将A 构建为“Debug”,而将B 构建为“Release”,该怎么办?我将如何在 Xcode 中指定它?

【问题讨论】:

【参考方案1】:

我不知道有什么简单的方法,但是您可以通过“运行脚本”构建阶段直接调用 xcodebuild 来强制执行它。

我知道这只是一个示例,但如果您的真正目标是子项目是发布(无符号)构建,那么只需将子项目构建到库或框架中,您可能会获得更好的体验并将生成的二进制文件检查到您的版本控制系统中。每当我有一个很少更改并且我不想要调试符号的系统时,我会继续将其构建为静态库并将其签入。我经常继续将代码移动到其他地方(使用一个带有 .a 的 README 文件,说明代码在哪里以及它是如何构建的)。这节省了构建和签出的时间,根据我的经验,对于大型项目来说非常宝贵。

【讨论】:

【参考方案2】:

这可能会有所帮助:如果找不到项目 A 的配置,Xcode 将构建 Release 配置作为后备(或者可能是列表的第一个配置)。

然后您可以使用此提示“强制”链接:Xcode custom build configuration causes "library/file not found" for static libraries

【讨论】:

【参考方案3】:

是的,这不是 Xcode 自然支持的;当您构建一个目标时,它会构建自己和所有依赖目标的一个配置。

正如 Rob 所提到的,解决方法是有一个依赖目标,它是一个聚合目标类型,它包含一个运行脚本构建阶段,它只是调用 xcodebuild -configuration Release(或其他)。

【讨论】:

【参考方案4】:

您可以在项目信息中指定默认的 'fallback' 配置。

更改自:

使用“发布”进行命令行构建。

到:

对命令行构建使用“调试”。

默认为“调试”。

项目文件的差异

【讨论】:

以上是关于在 Xcode 中指定子项目的配置的主要内容,如果未能解决你的问题,请参考以下文章

在 MySQL 的“完全外连接”中指定条件的目的是啥?

子项目的 Xcode 环境变量

使用来自 Xcode 4 子项目的静态库和捆绑产品

在 Xcode 中搜索文件

如何调试 Gradle 为啥使用我在依赖子项目中指定的不同版本的库?

项目和子项目的 Cocoapods