我有一个有多个目标的项目。有一个与项目相关联的xcconfig文件,还有一些与目标相关联的xcconfig文件。
现在,我想通过CocoaPods合并第三方库。在$ pod install
之后,CocoaPods拧紧了原始项目,因为它将自己的xcconfig文件Pds.xcconfig
与原始项目的目标相关联。这将完全忽略并覆盖在与项目关联的原始xcconfig中定义的设置,并切换出与目标关联的原始xcconfig文件。因此,该项目最终被搞砸了。
例如,Cocoapods在与每个目标相关联的Pods.xcconfig
中定义了以下内容:GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
对于每种配置,我都有不同的配置,例如,调试osx.debug.xcconfig
定义的配置文件GCC_PREPROCESSOR_DEFINITIONS = DEBUG=1 DEBUG_LOG=2 __ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES=0
解决此类冲突的合理可行方法是什么?
编辑:
我已经搜索了GitHub上的CocoaPods问题列表。似乎有很多与xcconfig文件相关的问题,其中一些已存在2年以上。对它们进行了讨论,然后关闭,但是-在我看来-该问题尚未解决。
恕我直言,这是一个基本问题,也是一个基本问题:有一个使用xcconfig文件的项目。然后,一个人希望通过CocoaPods包含一个第三方库。执行pod install
之后,该项目就搞砸了。
那么,这是怎么回事?
最佳答案
您仍然可以吃蛋糕并(部分)吃掉它。目标的xcconfig文件可以包含cocoapods之一:
#include "../Pods/Pods.xcconfig"
MY_SETTING = YES
...
但是,当您要指定已经在Pods.xcconfig中设置的标志时,您仍然无法食用的部分。我找不到添加到Cocoapods已在包含文件中设置的路径的方法,例如您想要这样:
HEADER_SEARCH_PATHS = $(HEADER_SEARCH_PATHS) MyOtherIncludes
但是,此行只是删除Cocoapods header 搜索路径,仅保留MyOtherIncludes :-(
一种解决方法是将MyOtherIncludes移到项目的xcconfig文件中,而Cocoapods则不会。不幸的是,这对我不起作用,YMMV。
关于ios - CocoaPods的Pods.xcconfig与现有的冲突,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19009834/