我正在尝试将Python脚本添加到我的项目中,以直接从Git获取构建和市场营销编号。在
我创建了一个新的目标阶段,它运行一个脚本,如:
http://yeahrightkeller.com/2008/10/19/xcode-run-script-build-phase-tip/
我写了一个Python脚本来解析程序信息列表使用
from Foundation import NSMutableDictionary
但是,脚本在编译时失败,并向生成结果报告以下错误:
^{pr2}$显然,distutils以某种方式硬编码为它是为10.6版(我正在使用的是雪豹)编译的,但是该项目将MacOSX部署目标设置为10.5。在
如果我尝试将项目中的此变量设置为10.6,则会得到:
ld: library not found for -lcrt1.10.6.o
有什么办法解决这个问题吗?提前谢谢。在
在这个脚本中,您可以简单地将MACOSX_DEPLOYMENT_TARGET的值临时设置为10.6。所以你的命令是:
我也有同样的问题,我希望保留python版本,因为通过
NSMutableDictionary
处理plist比在Info.plist
上使用regex要好得多。在基于Maxence的回答,解决方案是将python代码从运行脚本构建阶段剥离到
gitversion.py
文件中:然后将原始运行脚本替换为shell脚本:
^{pr2}$一定要记住将
Shell
设置更改为/bin/sh
。在苹果发布了Python2.5和2.6和SnowLeopard(10.6),两个版本的部署目标都是10.6。如果你真的需要针对10.5版本的应用程序,你就不能安全地在10.6上使用苹果提供的Pythons来部署到10.5上。在
最简单的解决方案可能是下载并安装Python 2.6 from python.org。该Python的目标是10.3+,因此它可以同时用于10.5和10.6。您可能还需要确保Python安装在将部署应用程序的所有计算机上。在
另一个选择可能是使用py2app和python.org网站2.6并将其与主应用程序一起部署。或者在py2app下创建整个应用程序。在这两种情况下,应用程序都会包含自己的python框架解释器和框架,独立于系统版本。在
编辑:根据你的评论,我不确定我是否理解你的问题。由于您运行的是10.6,所以我不清楚(1)为什么将部署目标设置为10.5;(2)如果需要将部署设置为10.5。我猜你有一个现有的Xcode项目,它是在10.5上开发的,然后从10.5版的Xcode导入或升级到10.6版的Xcode。如果是这样的话,那么我认为唯一需要做的事情就是在项目窗口的顶部将activesdk从10.5更改为10.6(在概述中)。这样做并强制清除所有目标应该可以解决
crt library not found
错误;如果不是,则项目依赖项有问题。在另一方面,如果你真的需要为10.5开发10.6,那么看起来gitversion.py引入了对Python2.6的不经意的依赖(从回溯可以看出),这不是10.5的一部分。除非您真的需要Python2.6特性,否则您应该能够通过使用Python2.5来消除这些特性,而Python2.5是苹果在10.5和10.6上提供的。在这种情况下,您可能只需要确保在构建阶段脚本中使用/usr/bin/python2.5调用python,而不仅仅是python。在
相关问题 更多 >
编程相关推荐