iphone – Xcode目标阶段Python脚本

前端之家收集整理的这篇文章主要介绍了iphone – Xcode目标阶段Python脚本前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_502_0@

我正在尝试将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上使用正则表达要好得多.

基于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.

原文链接:https://www.f2er.com/python/438996.html

猜你在找的Python相关文章