2

语境

我们有一个大项目,所以应用程序与一些通用代码是分开的。每个都放在自己的仓库中,应用程序通过 cocoapods 使用公共代码作为库。

情况

现在,我们需要切换 lib 中包含的一些非常具体的功能。但是启用/禁用它的条件是在 application-prefix.pch 文件中定义的 MACRO(我知道,不酷)。

问题

lib 中的代码(作为 Pod 包含)不会“看到”pch 文件中定义的 MACRO。所以,我们实际上不能切换这种行为。

总结

我见过的唯一选择是在我们的 Podfile 中添加一个安装后挂钩,但它似乎主要适用于构建设置中定义的 MACROS;而在这种情况下,宏是在 pch 文件中定义的。而且我真的真的真的不想在 lib 或 podfile 中添加值。

任何可以为我指明正确方向的建议或想法将不胜感激!

4

1 回答 1

0

无法在 Cocoapod 的源代码中使用应用程序项目的宏 - 这是因为整个 pod 目标将在应用程序目标开始构建之前构建,因此 pod 无法知道宏.

我的第一直觉是使用您提到的安装后挂钩。但是,您也可以在另一个pod 中添加您需要的宏,并让每个目标(包括 pod 和主应用程序)都依赖于该新 pod。

另一种更简洁的方法:设计 pod 代码,使其能够在有或没有您想要控制的特定功能的情况下运行(例如,通过布尔标志)。然后,根据应用程序中宏的值,选择将该标志作为真或假传递给 pod 代码。

于 2018-11-16T07:44:16.610 回答