我正在尝试在iOS项目中使用Cocoapods和一些自定义配置
我有3个(Dev,Stage,Prod),每个人都有一些自定义GCC_PREPROCESSOR_DEFINITIONS
。
我已经看到周围的人向我们建议#include <path-to-pods.xcconfig>
,但这似乎是旧的方式来做到这一点
我见过Cocoapods 0.39
会根据我的配置自动生成配置文件,并自动将它们添加到我的目标中(这很好)。
this article正在谈论创建Podfiles的“新方法”,这也证实了这一点。
问题是这些文件不包含我的配置
我试图使用xcodeproj
和link_with
,但没有成功。
有谁知道处理Cocoapods +自定义xcconfig文件的正确方法是什么?
答案 0 :(得分:2)
问题是CocoaPods基于xcconfig文件并设置实际变量。但是当完整配置在xcconfig文件中时,这些值不能以任何方式使用,如:
#include "../Pods/Target Support Files/Pods-Demo/Pods-Demo.debug.xcconfig"
GCC_PREPROCESSOR_DEFINITIONS = ...
在这种情况下,GCC_PREPROCESSOR_DEFINITIONS
会覆盖以前的值。
以下是解决问题的方法:
更新Podfile以在post_install上重新定义带GCC_PREPROCESSOR_DEFINITIONS
前缀的PODS_
值:
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
以下一种方式定义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
&amp;你定制的价值观。