编辑Xcode xcconfig文件和Cocoapods

32

我希望编辑 xcconfig 文件,但不幸的是,因为我正在使用 Cocoapods,Xcode 每个配置只允许有一个 xcconfig 文件,而且这个文件是 Pods.xcconfig

那么如何在不影响Cocoapods的情况下编辑 xcconfig 呢?

我能想到以下几种方式:

  1. 让 Xcode 使用多个 xcconfig 文件
  2. 使用自己的 xcconfig 文件并包含 Pods.xcconfig 文件

那么我们该怎么做呢?


可可应用程序包配置文件不是在项目级别吗?如果是,那么只需在目标级别进行配置。 - trojanfoe
@trojanfoe,你所说的目标级别是指进入目标构建设置面板并手动指定设置吗?我不想用那种方式。 - onmyway133
你不想那样做?为什么呢? - trojanfoe
1
@trojanfoe 我害怕合并冲突,所以使用xcconfig,我不必手动进入构建设置面板。 - onmyway133
什么是“合并冲突”?对Xcode项目或源文件进行的任何更改都可能导致合并冲突,因此如果您害怕它们,那么您将无法做任何事情! - trojanfoe
1
在执行 pod install 命令期间,Pods.xcconfig 文件会自动放置在目标配置中。如果您更改了此设置,则每次更新 Pods 后都需要手动更改。因此,问题是如何避免这种情况。 - skywinder
2个回答

18

现今(XCode 9.x,CocoaPods 1.4.0),您只需添加以下内容:

#include "Pods/Target Support Files/Pods-MyApp/Pods-Pods-MyApp.debug.xcconfig"

将内容添加到您的自定义xcconfig文件中。 pod install 会发出警告,但会自动采取正确的操作(即什么都不做); 它甚至会告诉我们要做上述的事情。


现在不再需要防止集成(这也会使我们没有工作区)。顺便说一句,选项--no-integrate已经不存在了;如果我们需要它,我们将在Podfile中添加:integrate_targets => false作为选项来使用install!


4
实际上,这似乎是不必要的:如果你为 项目 设置自己的 xcconfig 文件,并将 CocoaPods 的 xcconfig 留给每个 目标,那么两个配置文件都会被使用,一切都很好。 - Yonat
@Yonat 听起来很合理。我的用例(未在上面说明)是以自动化方式使用带有Pods的SwiftPM生成的XC项目;我不想手动触碰项目或工作区。而且,由于我可以告诉SwiftPM只“使用这个配置!”而没有进一步的细节,所以我认为那里没有什么好运气。 - Raphael
@KarenAnne 我不再使用/处理 Mac 电脑(感谢上帝!),因此我无法检查。我建议您提出一个新问题。祝你好运! - Raphael
@Raphael如果我不想在我的xcconfig文件中添加#include文件路径,我该怎么做? - Arshad Shaik
@ArshadShaik 正如我之前所写的,我已经多年没有使用这个技术栈了,所以我无法告诉你。我建议你开一个新问题,并链接到这个问题作为参考。 - Raphael

6

这里有一个与 CocoaPods Tracker 相关的问题。

这里描述了一种解决方法: #1736

正如 CocoaPods 仓库的所有者 kylef 所提到的:

手动解决方案: 使用 pod install --no-integrate,然后从您的自定义 xcconfig 文件中添加 #include "Pods/Pods-GCE.xcconfig"

我认为没有明确的解决方案可以自动修复它,但也许如果 CocoaPods 检测到这个问题并告诉用户会很好。在我执行了 pod install 并且项目的 xcconfig 文件没有被包含之后,花了我一段时间才弄清楚发生了什么。


3
这个方法差不多行得通,但似乎CocoaPods已经改变了。我不得不使用#include "Pods/Target Support Files/Pods/Pods.debug.xcconfig"而不是GCE路径。同样,在我的AppName.release.xcconfig中,我使用了#include "Pods/Target Support Files/Pods/Pods.release.xcconfig" - Collin Allen
这个答案已经过时了,必须避免使用,请查看Raphael的答案获取更准确的答案。 - Roger Oba

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