2011-07-15 49 views
6

我有一個名爲MyApp的鏈接到一個靜態庫在MyLibrary 我已經添加了在MyLibrary項目Xcode和添加的在MyLibrary應用程序目標爲MyApp的目標依賴關係。 這一切都很好,我可以設置斷點,我很高興。的Xcode 4:在從屬目標定義一個預處理宏

的事情是,我希望有條件的日誌庫:

#ifdef DEBUG 
# define MYDebug(msg, ...) NSLog(@"\nDEBUG -> %@ \n(%s:%d)",[NSString stringWithFormat:msg, ## __VA_ARGS__], __PRETTY_FUNCTION__,__LINE__); 
#else 
# define MYDebug(msg, ...) 
#endif 

所以我有兩個構建配置爲我的圖書館: - 調試有「DEBUG = 1」的目標的構建設置在「預處理宏」 - PROD無關

而且在MyLibrary目標設定爲建立與調試構建配置。

這工作正常,如果我建立靜態庫(.a),並將其包含在項目中。 但是,如果它是由目標依賴項構建的,似乎沒有定義DEBUG(MYDebug不記錄任何內容)。

我也嘗試在MyApp的構建設置中設置DEBUG = 1,但它不起作用。

有什麼我錯過了,或另一種方式來做到這一點?

+0

是的,不知何故,你忽視了一些東西 - 你試圖做的是相當基本和基本的東西。你使用的是什麼版本的XCode?你有沒有嘗試'清理'(Apple-Shift-k)你的目標? – hooleyhoop

+0

XCode 4.也許它是基本的,但我是圖書館開發新手,我很困惑,因爲它工作,除非庫是從另一個項目構建的,作爲依賴項。我會盡量清理,但我懷疑這會有所幫助。 – Julien

+0

我只是表示你完全正確地期望這能解決問題。清潔常常有幫助,所以請讓我們知道。 – hooleyhoop

回答

8

它應該只是「DEBUG」而不是「DEBUG = 1」。此外,以使用需要一個對象分配一個宏(的NSString等),你需要逃脫最喜歡@"等人物..

這是在Xcode 4.1我的一個工作項目的截圖:

enter image description here

+0

感謝您的回答。我不明白爲什麼DEBUG = 1在DEBUG會不起作用。而關於字符的轉義似乎也不是問題,因爲它在我建立圖書館時工作得很好 – Julien