我正在创建一个 CocoaPod 框架(Pod B),它依赖于另一个 CocoaPod 框架(Pod A)。 Pod A 使用的一些行为和文件位置由预处理器宏控制。有没有办法可以从 Pod B 提供这些宏中的一些,这样 Pod B 的用户就不必知道或处理 Pod A 所需的设置?
我已经尝试在 XCode 中设置其中一些,但似乎构建 Pod A 并没有从 XCode 中获取这些设置中的任何一个。最好不要修改 Pod A 的 .xcconfig,除非它可以作为构建过程或 Pod B 安装的一部分自动化。
更新
CocoaPods 团队似乎有 talked about solving这个问题,但我看不到是否对此进行了任何工作。想知道是否有人试图以其他方式解决这个问题。
我真的更愿意避免使用 post_install
的标准机制。在 Podfile 中,因为这需要 Pod B 的用户进行更改,因此要注意这些设置。
最佳答案
您是否可以接受在 Pod B 的 header 中定义/重新定义宏?例如,如果 Pod A 定义了 foo
, & 你希望它被定义为不同的东西,你可以添加如下内容到 Pod_B.h
:
#ifdef foo
#undef foo
#endif
#define foo bar
当然,你会替换 Pod_B.h
带有 Pod B 的标题,& foo
和 bar
使用宏以及您想要定义它们的任何内容。编辑
显然,这行不通,但您可以将 Pod A 构建为 Pod B 的子项目,这将使用户与其隔离,并且仍然允许其他项目以与 Pod B 不兼容的方式使用 Pod A。
关于xcode - 为另一个 pod 添加预处理器宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40645413/