如何在使用CocoaPods时向Xcode添加自定义项目配置?

时间:2015-05-07 13:45:18

标签: ios objective-c xcode cocoapods

我有一个iOS / OS X Xcode项目,我正在使用CocoaPods,我似乎无法弄清楚如何在不完全炸毁构建的情况下添加我自己的项目配置(除了Debug和Release)

在项目中,我有许多目标,适用于两个平台及其应用扩展程序上的应用。 Xcode工作区当然也有Pods项目。

因为该项目为iOS和Mac构建目标,所以我使用CocoaPods“目标”将他们的pod分组在一起。我的Podfile看起来像这样:

source 'https://github.com/CocoaPods/Specs.git'

target :iOS do
  platform :ios, '7.1'
  link_with 'iOS', 'NozbeToday', 'NozbeShare', 'NozbeWatch'

  # pods...
end

target :Mac do
  platform :osx, '10.9'
  link_with 'Mac'

  # pods...
end

现在我遇到了问题。到目前为止,我的项目中只有默认的“Debug”和“Release”配置。我想更改它们并为不同的配置文件/捆绑ID组合添加一些新的。

......我被困住了。我无法弄清楚如何做到这一点。

问题的第一个迹象是针对每个目标/配置组合发出警告pod install

  

[!] CocoaPods没有设置项目的基本配置   因为您的项目已经有自定义配置集。为了   CocoaPods集成工作,请设置基础   目标NozbeTodayPods/Target Support Files/Pods-iOS/Pods-iOS.dev debug.xcconfig的配置或包含   Pods/Target Support Files/Pods-iOS/Pods-iOS.dev debug.xcconfig in   你的构建配置。

我无法弄清楚它意味着什么,以及如何解决这个问题。无论哪种方式,项目都不会构建 - 在最好的情况下,我会得到一个链接器错误,说它无法找到Pods-something.a ......

3 个答案:

答案 0 :(得分:41)

好的,所以写这个问题的中途我自己想出来了(yay rubber ducking)。这是下一代的解决方案:

基本上,您必须在Pods目标上添加对应用程序方案的显式依赖。

您的方法是:编辑您的应用程序方案,转到Build部分,然后添加Pods目标以上您的应用程序目标。你应该看到这样的东西:

enter image description here

它会起作用。

对于pod install上的CocoaPods警告,您需要为每个Xcode配置使用CP生成的xcconfig个文件。你这样做的方式是:

  • Pods/Target Support Files
  • 中找到.xcconfig文件
  • 将它们拖放到Xcode项目中的“Pods”组(仅添加引用。不要复制到目标或添加到构建中)
  • 单击项目导航器中的项目,然后选择项目本身(不是目标之一)。转到Info,在Configurations下,在“基于配置文件”列中为每个配置和目标设置正确的.xcconfigs。

你的Podfile中也需要这样的东西,让CocoaPods知道哪些Xcode配置是“调试”(未经优化),这是“发布”:

project '1Nozbe', {
  'iOS 1 Dev Debug' => :debug,
  'iOS 2 Dev AdHoc' => :release,
  'iOS 3 Release Debug' => :debug,
  'iOS 4 Release AdHoc' => :release,
  'iOS 5 Release AppStore' => :release,
}

与CocoaPods不完全相关,但如果您碰巧有除CP之外的其他(子项目)依赖项,您还需要做两件事:

  • 在子项目目标上添加显式依赖项(如上面的屏幕截图所示)
  • 在子项目中重命名/添加配置,使它们与主项目相同。 (否则,Xcode只知道您的子项目使用哪种配置)

答案 1 :(得分:8)

在配置文件中添加此行,就像导入头文件一样:

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

注意:它是#include,而不是#import

答案 2 :(得分:4)

无需将显式依赖项添加到任何架构或拖放东西的另一种解决方案:

使用CocoaPods时如何向Xcode添加自定义项目配置

通常,当您将自定义配置添加到xcode项目(“调试”和“发布”除外)时,您应该要做的事情就是运行pod install。这将修复/重新制作cocoapods通常所做的更改。

如何获得CocoaPods did not set the base configuration of your project because...警告

在项目级别的Configurations标签下的Info设置上,您需要设置要使用的基本配置(运行pod install时生成)

也不要忘记告诉cocoapods应该使用什么配置,换句话说,map your condfigurations with pods configurations,否则您的编译时间可能会大大增加