如何使用第三方框架中使用的预处理器宏

时间:2015-04-17 09:19:28

标签: ios ios-frameworks

我正在为iOS开发SDK,我使用预处理器宏来改变代码的行为,例如:

#ifdef Home
    NSLog(@"I'm at home");
#endif

现在我构建了一个框架来提供我的SDK但是如果我尝试在测试应用程序中导入它,那么代码永远不会被执行。我尝试将相同的预处理器宏添加到应用程序目标但没有成功。

请告诉我如何在第三方框架内设置预处理器宏?

由于 Giulio的

2 个答案:

答案 0 :(得分:0)

你应该添加

#define Home

这个宏将能够执行

#ifdef Home
NSLog(@"I'm at home");
#endif

答案 1 :(得分:0)

不是100%肯定,但你可能会想到你的框架内的依赖关系的cocoapods。如果可能,请创建前缀标头。在podspec中,您可以识别子规范(使用框架的最终开发人员必须提及的依赖关系 - 谁想要启用或禁用),并且您可以定义" prefix_header_contents"添加宏。

比如说,如果最终开发人员想要启用" AFNetworking"的功能。由您的框架提供,开发人员应使用他的pod文件添加您的框架,如

pod' YourFrameworkPod',:subspecs => [" AFNetworking"]

这会将您的框架以及AFNetworking添加到开发人员的项目中。

您必须将podspec定义为

s.subspec 'AFNetworking' do |af|
    af.prefix_header_contents = '#define AF_EXISTS'
    af.source_files = 'YourPod/Classes/**/*'
    af.dependency 'AFNetworking'
end

因此,您可以在

中执行与AFNetworking相关的代码
 #ifdef AF_EXISTS
    Your stuff!
 #endif