【问题标题】:Check if a framework is linked at precompile检查框架是否在预编译时链接
【发布时间】:2012-09-09 20:50:31
【问题描述】:

是否有一个预编译器指令可以检查框架是否链接到 Obj-C/Cocoa 项目中?

例如,我有一类有用的类别和一些 MapKit 类别。但是,如果 MapKit 未链接到框架,则这些类别将无法编译。

有没有类似的:

#ifdef MAPKIT
....
// Only compiles if MapKit framework is linked to the current project
....
#endif

【问题讨论】:

  • 这没有意义。宏评估在链接阶段之前很久就完成了。

标签: iphone objective-c cocoa frameworks precompile


【解决方案1】:

没有。预处理和编译发生在一个构建阶段——链接是一个单独的阶段。

Xcode 没有为您提供一种简单的方法来访问/枚举与源文件中的链接相关的构建设置。

【讨论】:

  • 谢谢。我不知道宏评估是在链接阶段完成的。
【解决方案2】:

MapKit 还需要一个头文件。 MKFoundation.h 定义了MK_EXTERN。 你可以检查一下。

#ifdef MK_EXTERN

#endif

【讨论】:

  • 没有理由需要预编译 MapKit 的标头。将世界添加到 PCH 中实际上是个坏主意。
  • 但这样的定义可能会帮助您发出警告,提醒您忘记包含该特定框架,而不是有时混淆链接错误,您需要谷歌找出项目中缺少的内容
猜你喜欢
  • 2013-03-16
  • 2013-10-12
  • 2013-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-17
相关资源
最近更新 更多