2009-11-11 10 views
7

Sto usando la versione Macports di python su un computer Snow Leopard e usando cmake per creare un'estensione multipiattaforma ad esso. Cerco l'interprete Python e le librerie del sistema, utilizzando i seguenti comandi in CMakeLists.txtTrovare il framework Python corretto con cmake

include(FindPythonInterp) 
include(FindPythonLibs ) 

Tuttavia, mentre CMake identificato l'interprete corretto in /opt/local/bin, cerca di collegare contro il quadro sbagliato - vale a dire il sistema di Python struttura.

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

E questo fa sì che il seguente errore di runtime

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

Appena sostituisco -framework Python con /opt/local/Library/Frameworks/Python.framework/Python le cose sembrano funzionare come previsto.

Come posso fare collegamento CMake contro framework Python corretta trovato in

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

piuttosto che un sistema in

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

?

risposta

5

aggiungendo la seguente in ~/.bash_profile

export DYLD_FRAMEWORK_PATH=/opt/local/Library/Frameworks 

risolve il problema, almeno temporaneamente. Apparentemente, questa incoerenza tra l'interprete python e il framework python usato da cmake è un bug che dovrebbe essere risolto nella nuova versione.

1

Non ho familiarità con CMake, ma con la versione Apple di gcc/ld, è possibile passare il flag -F per specificare un nuovo percorso di ricerca framework. Ad esempio, -F/opt/local/Library/Frameworks eseguirà una ricerca nella directory framework di MacPorts. Se è possibile specificare tale flag utilizzando CMake, potrebbe risolvere il problema.