2012-12-11 32 views
4

我已經針對各種配置進行了一些構建設置,例如,是否可以將用戶定義的XCode構建設置導出到環境變量

Build settings例如

我可以像這樣訪問他們的各種文件(如Info.plist中):

${MYTESTSETTING} 

但是是有可能得到在命令行環境的價值?例如從詹金斯

一個xcodebuild聯編後我試圖

echo ${MYTESTSETTING} 

而且

echo $MYTESTSETTING 

回答

10
xcodebuild -showBuildSettings 

顯示所有構建設置,包括用戶自定義設置。例如:

$ xcodebuild -configuration Debug -showBuildSettings | grep MYTESTSETTING 
    MYTESTSETTING = DebugValue 
$ xcodebuild -configuration Release -showBuildSettings | grep MYTESTSETTING 
    MYTESTSETTING = ReleaseValue 

要將這些變量放到當前shell的環境中,必須解析此輸出。這可以例如用Perl腳本(或許多其他腳本語言)完成。

使用以下內容創建一個Perl腳本 「exportsettings.pl」:

#!/usr/bin/perl 
open(FH, "xcodebuild -configuration Release -showBuildSettings|"); 
while(<FH>) { 
    if (/\s*(\w+)\s*=\s*(.*)$/) { # Search for <key> = <value> 
     $key = $1; $value = $2; 
     print "export $key='$value'\n"; 
    } 
} 
close(FH); 

現在你可以在命令行中運行命令

$ eval `perl exportsettings.pl` 

,和(幾乎)所有的構建設置在環境中。 (會出現一些錯誤消息,例如「UID:只讀變量」)。

如果您需要在環境只有您使用自定義設置,你可以使用一個獨特的前綴(如「我的」),並改變線

if (/\s*(\w+)\s*=\s*(.*)$/) { # Search for <key> = <value> 

if (/\s*(MY\w+)\s*=\s*(.*)$/) { # Search for MY<key> = <value> 
+0

我希望它將不會將值導出到系統名稱空間,是不是? –

+0

@ A-Live:它輸出到執行'eval'命令的shell的環境。其他外殼或系統不受影響。我認爲這是OP想要的。 - 但我會改變我的回答,使其更清楚,謝謝你的反饋! –

+0

真的很好答案!謝謝。 – Robert

相關問題