Как сделать ссылку на конкретную версию фреймворка в XCode? - PullRequest
6 голосов
/ 10 марта 2010

У меня есть приложение, которое ссылается на Python.framework OS X. С тех пор как Snow Leopard обновился до Python 2.6, платформа теперь содержит версии для 2.4, 2.5 и 2.6. Похоже, что моя программа не хочет связываться с 2.6, и это приводит к ошибкам, когда я пытаюсь использовать функции из более новой среды исполнения Python.

Я знаю, что могу просто использовать install_name_tool, чтобы изменить ссылку в шаге после сборки, но есть ли способ просто сказать ему, куда ссылаться во время сборки? Похоже, довольно распространенный вариант использования.

Ответы [ 2 ]

2 голосов
/ 10 марта 2010

Я не пробовал это, но я верю, что это будет работать.

1) НЕ добавляйте фреймворк в ваш проект Xcode

2) Вместо этого используйте полный путь к библиотеке в "OTHER_LINKER_FLAGS" - так "/System/Library/Frameworks/Python.framework/2.5/Python"

3) Вам также нужно установить путь поиска в рамках фреймворка на «/System/Library/Frameworks/Python.framework/2.5/» и установить путь поиска для включения на «/System/Library/Frameworks/Python.framework». /2.5/Headers"

Однако, учитывая все вышесказанное, это сделает вас уязвимым для любых изменений, которые Apple может внести. Например, все сломается, если они позже удалят 2.5 из фреймворка. Было бы гораздо лучше просто обновить приложение, чтобы оно работало с текущей версией Python.

1 голос
/ 02 декабря 2010

У меня тоже была эта конкретная проблема, и я не смог найти способ получить Python Framework 2.6 в сборке.

Я не смог заставить работать подход OTHER_LINKER_FLAGS, увы.

Итак, как предположил SJML, я использовал шаг пост-сборки примерно так:

#
# Force the required version of Python to be 2.6
# dvb10.12.01

install_name_tool \
    -change \
        /System/Library/Frameworks/Python.framework/Versions/2.5/Python \
        /System/Library/Frameworks/Python.framework/Versions/2.6/Python \
    $TARGET_BUILD_DIR/omino_python.plugin/Contents/MacOS/omino_python

Просто выкладываю это для разборок. :)

...