【问题标题】:CocoaPods' Pods.xcconfig conflicts with existing onesCocoaPods 的 Pods.xcconfig 与现有的冲突
【发布时间】:2013-10-01 08:02:41
【问题描述】:

我有一个包含多个目标的项目。有一个与项目关联的 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后,项目搞砸了。

那么,这是怎么回事?

【问题讨论】:

    标签: ios xcode macos cocoapods xcconfig


    【解决方案1】:

    您仍然可以吃蛋糕并(部分)吃掉它。您的目标的 xcconfig 文件可以包含 cocoapods 之一:

    #include "../Pods/Pods.xcconfig"
    MY_SETTING = YES
    ...
    

    然而,你仍然不能吃的部分是当你想要指定已经在 Pods.xcconfig 中设置的标志时。我找不到添加到 Cocoapods 已在包含文件中设置的路径的方法,例如你想要这个:

    HEADER_SEARCH_PATHS = $(HEADER_SEARCH_PATHS) MyOtherIncludes
    

    然而,这一行只是删除了 Cocoapods 标头搜索路径,只留下了 MyOtherIncludes :-(

    一种解决方法应该是将 MyOtherIncludes 移动到项目的 xcconfig 文件中,Cocoapods 不会触及这些文件。不幸的是,这对我不起作用,YMMV。

    【讨论】:

    • 不幸的是,不能扩展或修改的构建设置是必不可少的:GCC_PREPROCESSOR_DEFINITIONS、HEADER_SEARCH_PATHS、OTHER_CFLAGS 和 OTHER_LDFLAGS。罪魁祸首也可能是 Xcode,因为 xcconfig 文件无法处理此类声明:HEADER_SEARCH_PATHS = $(HEADER_SEARCH_PATHS) MyOtherIncludes。为了完成这项工作,可能会破坏 Xcode 的 xcconfig 文件设置如何修改底层构建设置的当前行为。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-23
    • 1970-01-01
    • 2022-07-14
    • 1970-01-01
    • 2018-07-27
    • 1970-01-01
    • 2016-12-10
    相关资源
    最近更新 更多