【问题标题】:Is it possible to export user defined XCode build settings to environment variables是否可以将用户定义的 XCode 构建设置导出到环境变量
【发布时间】:2012-12-11 18:38:23
【问题描述】:

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

例如

我可以像这样在各种文件(例如 info.plist)中访问它们:

${MYTESTSETTING}

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

我试过了

echo ${MYTESTSETTING}

echo $MYTESTSETTING

【问题讨论】:

    标签: iphone ios xcode


    【解决方案1】:
    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>
    

    【讨论】:

    • 我希望它不会将值“导出”到系统命名空间,对吗?
    • @A-Live:导出到执行eval 命令的shell 环境。其他外壳或系统不受影响。我认为这就是 OP 想要的。 - 但我会更改我的答案以使其更清楚,谢谢您的反馈!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-10
    • 2021-07-28
    • 2016-04-25
    • 1970-01-01
    • 2015-08-21
    相关资源
    最近更新 更多