ios - 为 osx 和 ios 编译时导入 header

标签 ios xcode4 static-libraries workspace

假设我有两个库“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/

相关文章:

gcc - 如何使用静态库编译我的应用程序?

ios - 拉取以刷新 Swift JSON 数据

ios - RestKit 一对多关系逆映射

ios - iTunes 跨平台 IAP 订阅——Netflix 是怎么做到的?

ios - 我不小心从我的 xcode 项目中删除了一个文件夹,它去了哪里?

ios - Polidea 的 iOS Class Guard 成功,但无法区分差异

iphone - 设置表格的第一响应者 View ,但我们不知道它的类型(单元格/页眉/页脚)

objective-c - Mac 创建简单的 dylib?

Xcode 4 : Run tests from the command line (xcodebuild)?

ios - 使用带有静态库的插件构建Flutter iOS项目时出错