2012-09-17 58 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