2010-04-25 218 views
20

如何在使用xcodebuild時定義預處理器宏?xcodebuild - 如何定義預處理宏?

我需要使用一堆不同的配置來構建我的應用程序,並且我希望使用一個shell腳本來執行此操作,該腳本會使用不同的預處理器宏運行xcodebuild多次。

回答

18

Cmd + I在項目上打開「信息」對話框。然後在「Build」選項卡中找到「Preprocessor Macros」設置。 在那裏添加宏。

...哪裏可以找到設置名稱爲GCC_PREPROCESSOR_DEFINITIONS,所以你可以添加

GCC_PREPROCESSOR_DEFINITIONS="foo=bar" 

到xcodebuild聯編參數。

+4

*使用xcodebuild聯編時* – 2010-04-25 14:57:30

+1

我相信什麼KennyTM說,一旦安裝(使用GUI),xcodebuild就可以正常工作。 – nall 2010-04-25 15:19:39

+2

我在看xcodebuild的選項/標誌,甚至沒有注意到設置設置是基本用法語法的一部分。謝謝。 – 2010-04-26 19:19:47

29

您在xcodebuild命令行上通過GCC_PREPROCESSOR_DEFINITIONS

請記住,這個參數將被重新評估以用於類似shell的分詞和引號處理,所以您需要小心,特別是當您的宏值不僅僅是簡單的1 s(例如NSString文字)。

同樣重要的是要擴大你的設定值內GCC_PREPROCESSOR_DEFINITIONS(單引號,這樣你的腳本不擴張,但生成的shell擴展的話),否則你會失去你的項目的構建設置該屬性。

下面的代碼使你定義了一個不錯的bash的數組,然後展開在的方式xcodebuild命令行外殼東西被很好地躲過了數組:

defines=(TESTING=1 '[email protected]"http://192.168.0.101:8080"') 

xcodebuild -verbose -scheme "MyAppScheme" \ 
    GCC_PREPROCESSOR_DEFINITIONS='$GCC_PREPROCESSOR_DEFINITIONS '"$(printf '%q ' "${defines[@]}")" 
+2

你能告訴我,是否有必要給出一個值,TESTING = 1還是不?有沒有相當於#define TESTING的東西? – karim 2013-02-27 09:51:25

+0

好的,我必須使用雙引號並刪除$值。我曾經,GCC_PREPROCESSOR_DEFINITIONS ='$ value $ {e}',這不起作用,但GCC_PREPROCESSOR_DEFINITIONS =「$ {e}」起作用。 – karim 2013-02-27 10:22:20

+0

@karim我不知道$ e是什麼,但我感覺你完全錯過了這個答案的要點。此外,定義數組是您放置自定義定義的位置。上面的只是一個例子。很可能你的數組看起來完全不同。 – lhunath 2013-02-28 13:01:13