我正在尝试将Python脚本添加到我的项目中,以直接从Git获取构建和营销编号.
我创建了一个新的目标阶段,并运行脚本,如下所述:
http://yeahrightkeller.com/2008/10/19/xcode-run-script-build-phase-tip/
我编写了一个Python脚本,用于解析程序Info.plist
from Foundation import NSMutableDictionary
但是,编译时脚本失败并向构建结果报告以下错误:
Running a custom build phase script: gitversion.py
Traceback (most recent call last):
File "/Users/jorge/Documents/Programming iPod/Pruebas/RowOrder/Scripts/gitversion.py",line 9,in
很明显,distutils以某种方式硬编码它是为版本10.6(Snow Leopard,我正在使用的那个)编译的,但该项目将MacOSX部署目标设置为10.5.
如果我尝试将项目中的此变量设置为10.6,那么我得到:
ld: library not found for -lcrt1.10.6.o
关于如何解决这个问题的任何想法?提前致谢.
最佳答案
我有同样的问题,我想保留python版本,因为通过NSMutableDictionary处理plist比在Info.plist上使用正则表达要好得多.
原文链接:https://www.f2er.com/python/438996.html基于Maxence的答案,解决方案是将python代码从Run Script构建阶段剥离到gitversion.py文件中:
#!/usr/bin/env python
import os
from Foundation import NSMutableDictionary
from subprocess import Popen,PIPE
p = Popen(
"/sw/bin/git rev-parse --short HEAD",stdout=PIPE,close_fds=True,shell=True)
version = p.stdout.read()
print version
info = os.environ['INFOPLIST_FILE']
print info
plist = NSMutableDictionary.dictionaryWithContentsOfFile_(info)
print plist
plist['revision'] = version[:-1]
plist.writeToFile_atomically_(info,1)
然后用shell脚本替换原始的Run Script:
env MACOSX_DEPLOYMENT_TARGET=10.6 python gitversion.py
请务必记住将Shell设置更改为/ bin / sh.