是否可以将用户定义的XCode构建设置导出到环境变量

时间:2012-12-11 18:38:23

标签: iphone ios xcode

我为各种配置做了一些构建设置,例如

Build settings例如

我可以在各种文件(例如info.plist)中访问它们,如下所示:

${MYTESTSETTING}

但是可以在命令行环境中获取值吗?例如在Jenkins的xcodebuild之后

我试过了

echo ${MYTESTSETTING}

echo $MYTESTSETTING

1 个答案:

答案 0 :(得分:12)

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:readonly variable”)。

如果您只需要在环境中使用已定义的设置,则可以使用唯一的前缀(例如“MY”)并更改行

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

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