Намиране на правилната рамка на Python с cmake

Използвам версията на macports на python на компютър 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 ще търси в директорията на MacPorts frameworks. Ако можете да посочите такъв флаг с помощта на CMake, това може да реши проблема ви.

person mipadi    schedule 12.11.2009