2012-09-17 82 views
0

是否有预编译器指令检查框架是否在Obj-C/Cocoa项目中链接?检查框架是否在预编译时链接

例如,我有一类有用的类与一些MapKit类别。但是,如果MapKit没有链接到框架,那么这些类别将不会编译。

是否有类似的东西:

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

这是没有意义的。宏观评估是在链接阶段之前完成的。 –

回答

1

号预处理和汇编发生在一个构建阶段 - 链接是一个独立的阶段。

Xcode不提供一种简单的方式让您访问/​​枚举与链接源文件相关的构建设置。

+0

谢谢。我不知道在链接阶段完成了宏观评估。 – Martin

2

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

#ifdef MK_EXTERN

#endif

+0

没有理由MapKit的头文件需要预编译。将世界添加到PCH实际上是一个糟糕的主意。 – justin

+0

但定义像这些可能会帮助你发出警告,你忘了包含该特定的框架,而不是有时混淆链接错误,你需要谷歌找出项目中缺少的东西 – PetrV