【问题标题】:Add preprocessor macro for another pod为另一个 pod 添加预处理器宏
【发布时间】:2016-11-17 01:47:04
【问题描述】:

我正在创建一个依赖于另一个 CocoaPod 框架 (Pod A) 的 CocoaPod 框架 (Pod B)。 Pod A 使用的一些行为和文件位置由预处理器宏控制。有没有办法可以从 Pod B 提供其中一些宏,这样 Pod B 的用户就不必知道或处理 Pod A 所需的设置?

我已经尝试在 XCode 中设置其中的一些,但似乎构建 Pod A 并没有从 XCode 中获取任何这些设置。最好不必修改 Pod A 的 .xcconfig,除非这可以作为构建过程或 Pod B 安装的一部分自动进行。

更新 CocoaPods 团队似乎有talked about solving 这个问题,但我看不到这方面是否有任何工作。想知道是否有人尝试以其他方式解决此问题。

我真的希望避免在 Podfile 中使用 post_install 的标准机制,因为这需要 Pod B 的用户进行更改并因此了解这些设置。

【问题讨论】:

    标签: xcode cocoapods


    【解决方案1】:

    您是否可以接受在 Pod B 的标头中定义/重新定义宏?例如,如果 Pod A 定义了foo,并且您希望它被定义为不同的东西,您可以在Pod_B.h 中添加如下内容:

    #ifdef foo
    #undef foo
    #endif
    #define foo bar
    

    当然,您可以将 Pod_B.h 替换为 Pod B 的标头,将 foobar 替换为宏以及您想要定义的任何内容。

    编辑

    显然,这是行不通的,但是您可以将 Pod A 构建为 Pod B 的子项目,这样可以将用户与它隔离开来,并且仍然允许其他项目以不兼容的方式使用 Pod A豆荚 B。

    【讨论】:

    • 这些设置需要在 Pod A 构建之前生效,并且 Pod A 不包含 Pod_B.h。如果 Podfile 使用 Pod_B.h 重建 Pod A 的标头,这可能是可能的,但这会很脆弱。这个想法是让 Pod B 的客户指定一些设置,这些设置会导致用于构建 Pod A 的宏发生变化,而他们不必知道(或关心)Pod A 的内部工作。
    • 对不起,我很困惑。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    相关资源
    最近更新 更多