我正在为iOS开发SDK,我使用预处理器宏来改变代码的行为,例如:
#ifdef Home
NSLog(@"I'm at home");
#endif
现在我构建了一个框架来提供我的SDK但是如果我尝试在测试应用程序中导入它,那么代码永远不会被执行。我尝试将相同的预处理器宏添加到应用程序目标但没有成功。
请告诉我如何在第三方框架内设置预处理器宏?
由于 Giulio的
答案 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