语境
我们有一个大项目,因此应用程序与一些通用代码分开。每个人都有自己的存储库,应用程序通过cocoapods将通用代码用作lib。
情况
现在,我们需要切换库中包含的一些非常特定的功能。但是启用/禁用它的条件是在application-prefix.pch文件中定义的MACRO(我知道,这并不酷)。
问题
lib(包含在Pod中)中的代码未“看到” pch文件中定义的MACRO。因此,我们实际上无法切换此行为。
总结
我看到的唯一替代方法是在Podfile中添加安装后钩子,但它似乎可以与“构建设置”中定义的MACROS一起使用。而在这种情况下,MACRO在pch文件中定义。我真的真的不想在lib或podfile中添加值。
任何向我指出正确方向的建议或想法,将不胜感激!
最佳答案
无法在Cocoapod的源代码中使用应用程序项目的宏-这是因为整个Pod目标将在应用程序目标甚至开始构建之前就已构建,因此Pod无法了解宏。
我的第一个直觉是使用您提到的安装后挂钩。但是,您也可以在另一个容器中添加所需的宏,并使每个目标(包括容器和主应用程序)都依赖于该新容器。
另一种更简洁的方法:设计pod代码,使其能够在有或没有要启用的特定功能的情况下(例如布尔标志)运行。然后,根据应用程序中宏的值,选择将该标志作为true或false传递给pod代码。
关于ios - 如何从cocoapods库访问在我的pch中定义的宏?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30872130/