2009-11-11 16 views
7

Używam wersji Pythona dla Macports na komputerze Snow Leopard, a przy użyciu cmake do budowania rozszerzenia wieloplatformowego. I szukać interpretera Pythona i bibliotek w systemie za pomocą następujących poleceń w CMakeLists.txtZnajdowanie poprawnego frameworka Pythona za pomocą cmake

include(FindPythonInterp) 
include(FindPythonLibs ) 

Jednak podczas CUpewnij zidentyfikować właściwą tłumacza w /opt/local/bin, próbuje połączyć przeciwko złym ram - mianowicie Python System struktura.

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

A to powoduje następujący błąd wykonania

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

Jak tylko zastąpić -framework Python z /opt/local/Library/Frameworks/Python.framework/Python rzeczy wydają się działać zgodnie z oczekiwaniami.

Jak mogę dokonać Link cmake przed prawidłowym ramach Python znaleźć w

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

zamiast jednego systemu w

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

?

Odpowiedz

5

dodanie następujących w ~/.bash_profile

export DYLD_FRAMEWORK_PATH=/opt/local/Library/Frameworks 

rozwiązuje problem przynajmniej tymczasowo. Wydaje się, że ta niespójność między interpreterem python a strukturą Pythona używaną przez cmake jest błędem, który powinien zostać poprawiony w nowej wersji.

1

Nie jestem do końca zaznajomiony z CMake, ale z wersją gcc/ld firmy Apple można przekazać flagę -F, aby określić nową ścieżkę wyszukiwania ramek. Na przykład -F/opt/local/Library/Frameworks wyszuka w katalogu frameworków MacPorts. Jeśli możesz określić taką flagę za pomocą CMake, może to rozwiązać twój problem.