2012-02-07 23 views
4

我有一個項目,我分裂成兩個目標。最初的單目標項目使用了一些定義命令,但是我需要這些值現在會根據我構建的目標而不同。如何爲我的兩個不同的目標指定#define命令

什麼是正確的方法來做到這一點?我應該使用AppDelegate中聲明的NStrings嗎?或者我可以在設置#defines時使用#if語句嗎?

任何幫助,非常感謝。

回答

3

一種方法是這樣的:

#if defined(MON_TARGET_A) 
    #define MON_TARGET_NAME "App A" 
#elif defined(MON_TARGET_B) 
    #define MON_TARGET_NAME "App B" 
#else 
    #error "which target are you building?" 
#endif 

然後加入MON_TARGET_AMON_TARGET_B到您的目標的預處理器設置。

通常,您將使用GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS而不是GCC_PREPROCESSOR_DEFINITIONS,因爲後者會阻止共享PCH標頭。

要添加此,請訪問:

  • 項目瀏覽器 - >項目 - >目標 - >構建設置

然後刪除GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS進入搜索領域,並將其值設置爲一樣的東西: MON_TARGET_A $(inherited)

+0

賈斯汀!謝謝!那釘了它。你達人! – theDuncs 2012-02-07 11:06:47

+0

@DuncanCampbell歡迎您 - 歡呼聲:) – justin 2012-02-07 11:10:41

+0

爲什麼MON _...前綴只是出於好奇? – 2012-02-07 11:13:17

0

您可以在目標設置(預處理 - >預處理器宏)中添加額外的預處理器宏,並使用#ifdef。

這是最靈活的方法。

+0

Max!你很好,但賈斯汀先到那裏。先生,謝謝! – theDuncs 2012-02-07 11:07:22

相關問題