【问题标题】:Cocoapods and custom xcconfigCocoapods 和自定义 xcconfig
【发布时间】:2016-03-31 15:44:48
【问题描述】:

我正在尝试在 iOS 项目中使用带有一些自定义配置的 Cocoapods。
我有 3 个(Dev、Stage、Prod),每个都有一些自定义 GCC_PREPROCESSOR_DEFINITIONS。 我看到周围有人向我们建议#include <path-to-pods.xcconfig>,但这似乎是老方法。
我已经看到 Cocoapods 0.39 会根据我的配置自动生成其配置文件并将它们自动添加到我的目标中(这很好)。
this article 也证实了这一点,他正在谈论创建 Podfile 的“新方法”。 问题是这些文件不包含我的配置。
我试图使用xcodeprojlink_with,但没有成功。 有谁知道处理 Cocoapods + 自定义 xcconfig 文件的正确方法是什么?

【问题讨论】:

  • 您是在管理自己的 podspec 还是使用第三方 pod?
  • 如何包含来自您自己的 cocoapods xcconfig 文件的旧方法?这似乎是结合可可豆荚和自定义配置文件的最简单的解决方案。你有没有找到更好的解决方案?

标签: ios cocoapods xcconfig


【解决方案1】:

问题在于 CocoaPods 基于 xcconfig 文件并设置实际变量。但是当完整配置在 xcconfig 文件中时,这些值不能以任何方式使用,例如:

#include "../Pods/Target Support Files/Pods-Demo/Pods-Demo.debug.xcconfig"
GCC_PREPROCESSOR_DEFINITIONS = ...

在这种情况下,GCC_PREPROCESSOR_DEFINITIONS 会覆盖之前的值。

解决方法如下:

  1. 更新 Podfile 以在 post_install 上使用 PODS_ 前缀重新定义 GCC_PREPROCESSOR_DEFINITIONS 值:

    post_install do |installer|
        work_dir = Dir.pwd
        Dir.glob("Pods/Target Support Files/Pods-Demo/*.xcconfig") do |xc_config_filename|
            full_path_name = "#{work_dir}/#{xc_config_filename}"
            xc_config = File.read(full_path_name)
            new_xc_config = new_xc_config.sub(/GCC_PREPROCESSOR_DEFINITIONS/, 'PODS_GCC_PREPROCESSOR_DEFINITIONS')
            File.open(full_path_name, 'w') { |file| file << new_xc_config }
        end
    
    end
    
  2. 用下一种方式定义xcconfig文件:

    #include "../Pods/Target Support Files/Pods-Demo/Pods-Demo.debug.xcconfig"
    GCC_PREPROCESSOR_DEFINITIONS = $(PODS_GCC_PREPROCESSOR_DEFINITIONS) ...
    

在这种情况下,GCC_PREPROCESSOR_DEFINITIONS 应该包含 PODS_GCC_PREPROCESSOR_DEFINITIONS 和您的自定义值。

【讨论】:

  • CocoaPods 的$(inherited) 好像没有被拾取,所以你实际上必须使用GCC_PREPROCESSOR_DEFINITIONS = $(inherited) $(PODS_GCC_PREPROCESSOR_DEFINITIONS) ...
猜你喜欢
  • 1970-01-01
  • 2015-05-28
  • 1970-01-01
  • 1970-01-01
  • 2020-02-25
  • 1970-01-01
  • 2021-12-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多