Поиск правильного фреймворка Python с помощью cmake

Я использую версию python для macports на компьютере Snow Leopard и использую cmake для создания кроссплатформенного расширения. Я ищу интерпретатор Python и библиотеки в системе, используя следующие команды в CMakeLists.txt.

include(FindPythonInterp)
include(FindPythonLibs  )

Однако, несмотря на то, что cmake идентифицировал правильный интерпретатор в /opt/local/bin, он пытается связать неправильный фреймворк, а именно системный фреймворк Python.

-- Found PythonInterp: /opt/local/bin/python2.6
-- Found PythonLibs: -framework Python

И это вызывает следующую ошибку времени выполнения

Fatal Python error: Interpreter not initialized (version mismatch?)

Как только я заменяю -framework Python на /opt/local/Library/Frameworks/Python.framework/Python, все работает, как и ожидалось.

Как я могу сделать ссылку cmake на правильную структуру Python, найденную в

/opt/local/Library/Frameworks/Python.framework/Python

а не системный в

/System/Library/Frameworks/Python.framework/Python

?


person D R    schedule 11.11.2009    source источник


Ответы (2)


Добавление следующего в ~/.bash_profile

export DYLD_FRAMEWORK_PATH=/opt/local/Library/Frameworks

устраняет проблему хотя бы временно. По-видимому, это несоответствие между интерпретатором python и фреймворком python, используемым cmake, является ошибкой, которая, как мы надеемся, должна быть исправлена ​​в новой версии.

person D R    schedule 13.11.2009

Я не очень хорошо знаком с CMake, но с версией gcc/ld для Apple вы можете передать флаг -F, чтобы указать новый путь поиска фреймворка. Например, -F/opt/local/Library/Frameworks будет искать в каталоге frameworks MacPorts. Если вы можете указать такой флаг с помощью CMake, это может решить вашу проблему.

person mipadi    schedule 12.11.2009