2013-05-03 48 views
2

用戶特定的預處理器宏我希望能有具體的代碼塊,如#ifdef SOME_VARIABLE和變量將在項目的構建時間填寫,如果該項目正在興建一個特定用戶的機器上的價值。設置爲Xcode的

這可能嗎?

+0

你能使用一個Info.plist代替的#ifdef DEBUG _ $(USER)?你真的需要不同的構建嗎?如果是的話你可以使用不同的構建配置?會有多少個不同的SOME_VARIABLE。 – GayleDDS 2013-05-03 02:30:41

+0

我試圖做類似這樣的帖子的內容:http://stackoverflow.com/questions/9088380/xcode-preprocessor-dependent-on-environment-variable,但我沒有看到在代碼中宏的值。 – 2013-05-03 15:57:38

+0

但是你在做一個條件編譯還是隻需要你的代碼中的值。我使用構建腳本在Info.plist中設置版本號minor和major以及git hash,然後閱讀代碼中的Info.plist以獲取值並顯示它們。看到我的答案第二到最後在後:http://stackoverflow.com/questions/3730186/how-do-i-force-xcode-to-rebuild-the-info-plist-file-in-my-project-every -time-ib/16332406#16332406 – GayleDDS 2013-05-04 00:03:13

回答

4

您設置的值,在「預處理宏」構建設置。在構建設置中設置「SOME_VARIABLE = $ {USER}」相當於代碼中的#define SOME_VARIABLE「jappleseed」。

然後在你的代碼,你可以這樣做:

#define jappleseed 1 
#define sjobs  2 

#if DEV_USER == jappleseed 
    NSLog(@"Hi Jhonny"); 
#elif DEV_USER == sjobs 
    NSLog(@"Hi Steve"); 
#endif 

注:這是一個人爲的例子,如果你真的想要字符串「jappleseed」在你的代碼中使用,你應該使用一個Info.plist和不是#定義

+0

我試過了,但我沒有得到Build Settings中設置的值,只是定義的名稱。我發現環境值在Xcode項目設置窗格中展開爲期望值,但是當我嘗試打印出定義值時,我看到了變量的名稱,而不是值。 – 2013-05-04 01:15:19

+0

我更新了包含代碼端的答案。 – GayleDDS 2013-05-04 01:50:24

2

在Xcode中6(至少),你可以包括你的用戶名作爲名在預處理宏宏的的一部分構建設置部分:

ENV_USER_$(USER)=1(這將定義宏ENV_USER_myusername

然後,在你的代碼,你可以使用

#if ENV_USER_myusername 
... 
#endif 

定義中的=1可能是多餘的,因爲Xcode中似乎將變量定義爲true默認。我們把它放在那裏只是爲了安全起見,並能夠使用#if#ifdef。這種方式存在,它可能被定義爲沒有問題,但要評估false,在這種情況下仍然#ifdef會的工作,但#if不會。當然,您可以將其定義爲您希望的任何值,具體取決於您想要的值。

0
在迅速

:添加到「活動編輯條件」

沒有辦法分配一個值