Я пытаюсь добавить скрипт Python в свой проект, чтобы получить номера сборки и маркетинга непосредственно из Git.Xcode Target Phase Python Script
Я создал новую целевую фазу и запускает скрипт, как описан в:
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 <module>
from Foundation import NSMutableDictionary
File "/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/Foundation/__init__.py", line 8, in <module>
File "/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/PyObjC/objc/__init__.py", line 26, in <module>
from _bridgesupport import *
File "/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/PyObjC/objc/_bridgesupport.py", line 9, in <module>
import pkg_resources
File "/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/pkg_resources.py", line 651, in <module>
class Environment(object):
File "/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/pkg_resources.py", line 654, in Environment
def __init__(self, search_path=None, platform=get_supported_platform(), python=PY_MAJOR):
File "/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/pkg_resources.py", line 55, in get_supported_platform
plat = get_build_platform(); m = macosVersionString.match(plat)
File "/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/pkg_resources.py", line 181, in get_build_platform
plat = get_platform()
File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/distutils/util.py", line 97, in get_platform
cfgvars = get_config_vars()
File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/distutils/sysconfig.py", line 525, in get_config_vars
func()
File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/distutils/sysconfig.py", line 408, in _init_posix
raise DistutilsPlatformError(my_msg)
distutils.errors.DistutilsPlatformError: $MACOSX_DEPLOYMENT_TARGET mismatch: now "10.5" but "10.6" during configure
Finished running custom build phase script: gitversion.py (exit status = 1)
Очевидно, distutils каким-то образом жестко запрограммировал, что он скомпилирован для версии 10.6 (Snow Leopard, это тот, который я использую), но у проекта установлен целевой уровень развертывания MacOSX 10.5.
Если я пытаюсь установить эту переменную в проекте до 10,6, я тогда получаю:
ld: library not found for -lcrt1.10.6.o
Любые идеи о том, как решить эту проблему? Заранее спасибо.
Спасибо большое за ваш ответ Ned. Развертывание для 10.5 является обязательным с учетом ошибки, которую я получаю с 10.6. Но 10.5 не работает, потому что distutils ожидает 10.6 (как указано переменной окружения.) Есть ли способ сказать distutils работать на 10.5 или использовать версию 10.5? Цель для меня заключается только в том, чтобы добавить скрипт python в качестве целевой фазы, потому что чтение и запись plist проще, а не для развертывания приложения python. –
См. Дополнительные комментарии выше. Надеюсь, это поможет! –
Еще раз спасибо Нед. Это не проект MacOSX, а iPhone один, и он, кажется, требует 10.5 в качестве цели, потому что в противном случае я получаю: ld: библиотека не найдена для -lcrt1.10.6.o даже после очистки цели. Я решил пойти жестким путем и заменить скрипт python скриптом perl, который делает то же самое. Я не получаю такую же ошибку с perl. Бог благословит Перла! Спасибо TMTOWTDI! Я по-прежнему считаю, что существует проблема с python при использовании в качестве сценария проекта iPhone, но у меня есть обходное решение для него. –