我正在为构建自动化编写构建脚本。
我想要在不同版本的Xcode下运行构建脚本。 (例如,6,5.1.1,6.1b)。
但是,每个都会为-showsdks显示不同的列表,因此可用的sdk可能是。
不依靠文字改变体操...... 有没有办法在运行时以易于解析的格式获取此信息? (例如,XML在这里会很棒)。
答案 0 :(得分:1)
不,无法更改此命令输出的格式。但是输出总是采用相同的格式,并不像你想象的那样难以解析。
例如使用这个简单的python脚本:
#!/usr/bin/env python
import re
import subprocess
sdk_header_pattern = re.compile("^.*SDKs:$")
sdk_switch_pattern = re.compile("^.*(-sdk)\s[a-z]+\d+\.\d+$")
def run_command(cmd):
return subprocess.Popen(cmd,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
stdin=subprocess.PIPE).communicate()
input = run_command(['xcodebuild', '-showsdks'])[0] # take first element of returned tuple
sdks = {}
in_sdk = False
platform = ''
for e in input.split('\n'):
if sdk_header_pattern.match(e) and not in_sdk:
in_sdk = True
platform = e[0:e.rfind(' ')]
sdks[platform] = []
if in_sdk and sdk_switch_pattern.match(e):
sdk = e.split(' ')[-1]
sdks[platform].append(sdk)
if in_sdk and e == '':
in_sdk = False
del platform
for k,v in sdks.iteritems():
print 'Platform: ', k
for e in v:
print '\t', e
print