为osx和ios编译时导入标头

问题描述

|| 说我有两个库“ Foo \”和\“ Bar \”,它们被编译为OSX的框架和IOS的静态库。 库\'Foo \'取决于库\'Bar \'。我正在使用XCode4工作区。 在Ascii-art中: IOS_App 〜Foo.a ~~ Bar.a 和 OSX_App 〜框架 〜〜条形框架 必须将#imports Bar.h的文件Foo.m看起来像这样: @H_404_0@
#if TARGET_OS_IPHONE
  #import \"Bar.h\"
#else
  #import <Bar/Bar.h>
#endif
或者,有没有办法,例如,在构建Bar时复制标题,并适当设置Search Paths,以 @H_404_0@
  #import <Bar/Bar.h>
在两种情况下都可以工作吗? (我想我问题的根源是没有正确理解@H_404_0@
#import </>
和@H_404_0@
#import \"\"
间的区别)     

解决方法

        我已经广泛地做了这种事情,最后我要做的是修改应用程序/项目的前缀头,以导入库/框架的特定头文件,或者如果前缀在OS X和iOS之间是通用的(例如Foo库/框架)采用问题中的第一个示例。 然后在Foo.m中,您不需要在顶部使用任何#import语句。 因此,例如,在Foo.framework的前缀标头中有
#if TARGET_OS_IPHONE
  #import \"Bar.h\"
#else
  #import <Bar/Bar.h>
#endif
并且在Mac OS X应用程序的前缀标头中有
#import <Foo/Foo.h>
而对于iOS
#import \"Foo.h\"
然后,您所有的源代码都无需担心公用库/框架中任何类的标头。