我为各种配置做了一些构建设置,例如
例如
我可以在各种文件(例如info.plist)中访问它们,如下所示:
${MYTESTSETTING}
Run Code Online (Sandbox Code Playgroud)
但是有可能在命令行环境中获取值吗?例如,在Jenkins的xcodebuild之后
我试过了
echo ${MYTESTSETTING}
Run Code Online (Sandbox Code Playgroud)
和
echo $MYTESTSETTING
Run Code Online (Sandbox Code Playgroud)
Mar*_*n R 13
xcodebuild -showBuildSettings
Run Code Online (Sandbox Code Playgroud)
显示所有构建设置,包括用户定义的设置.例:
$ xcodebuild -configuration Debug -showBuildSettings | grep MYTESTSETTING
MYTESTSETTING = DebugValue
$ xcodebuild -configuration Release -showBuildSettings | grep MYTESTSETTING
MYTESTSETTING = ReleaseValue
Run Code Online (Sandbox Code Playgroud)
要将这些变量放入当前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);
Run Code Online (Sandbox Code Playgroud)
现在您可以运行该命令
$ eval `perl exportsettings.pl`
Run Code Online (Sandbox Code Playgroud)
从命令行,(几乎)所有构建设置都在环境中.(会有一些错误消息,例如"UID:readonly variable").
如果您只需要在环境中使用已定义的设置,则可以使用唯一的前缀(例如"MY")并更改该行
if (/\s*(\w+)\s*=\s*(.*)$/) { # Search for <key> = <value>
Run Code Online (Sandbox Code Playgroud)
至
if (/\s*(MY\w+)\s*=\s*(.*)$/) { # Search for MY<key> = <value>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2737 次 |
最近记录: |