在为osx&编译时导入头文件IOS

时间:2011-06-09 23:08:59

标签: ios xcode4 static-libraries workspace

假设我有两个库“Foo”和“Bar”,编译为OSX的框架和IOS的静态库。

图书馆'Foo'取决于图书馆'Bar'。我正在使用XCode4工作区。

在Ascii-art中: -

  • IOS_APP
  • ~Foo.a
  • ~~ Bar.a

  • OSX_App
  • ~Foo.framework
  • ~~ Bar.framework

必须提交 Foo.m ,指示#imports Bar.h 如下: -

#if TARGET_OS_IPHONE
  #import "Bar.h"
#else
  #import <Bar/Bar.h>
#endif

或者,是否有办法,可能是在构建时复制标题,并正确设置搜索路径,以制作

  #import <Bar/Bar.h>

在这两种情况下工作?

(我认为问题的根源无法正确理解#import </>#import ""之间的差异

1 个答案:

答案 0 :(得分:2)

我已经广泛地完成了这类工作,我最终做的是修改应用程序/项目的前缀头,以导入库/框架的特定头文件,或者前缀是否在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"

然后您所有的源代码,都不需要担心公共库/框架中任何类的标头。