假设我有两个库“Foo”和“Bar”,编译为 OSX 框架和 IOS 静态库。
库“Foo”依赖于库“Bar”。我正在使用 XCode4 工作区。
在 Ascii 艺术中:-
- 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
或者,有没有办法,可以通过在构建 Bar 时复制标题,并适本地设置搜索路径,来制作
#import <Bar/Bar.h>
在这两种情况下都有效?
(我想我的问题的根源是没有正确理解 #import </>
和 #import ""
之间的区别)
最佳答案
我已经广泛地做了这类事情,最后我做的是修改应用程序/项目的前缀 header 以导入库/框架的特定头文件,或者如果前缀在 OS X 之间是通用的和 iOS(例如 Foo 库/框架)采用您问题中的第一个示例。
然后在 Foo.m 中,您不需要在顶部有任何#import 语句。
因此,例如,在 Foo.framework 的前缀 header 中有
#if TARGET_OS_IPHONE
#import "Bar.h"
#else
#import <Bar/Bar.h>
#endif
并且在您的 Mac OS X 应用程序的前缀 header 中有
#import <Foo/Foo.h>
和 iOS
#import "Foo.h"
那么你所有的源代码,都不需要担心你的公共(public)库/框架中任何类的头文件。
关于ios - 为 osx 和 ios 编译时导入 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6300324/