2009-11-11 15 views
7

Estoy usando la versión macports de python en una computadora Snow Leopard, y usando cmake para construir una extensión multiplataforma para ella. Busco el intérprete de Python y bibliotecas en el sistema usando los siguientes comandos en CMakeLists.txtEncontrar el framework de Python correcto con cmake

include(FindPythonInterp) 
include(FindPythonLibs ) 

Sin embargo, mientras que cmake identificó el intérprete correcto en /opt/local/bin, trata de enlazar con el marco equivocado - es decir, el sistema Python marco de referencia.

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

Y esto hace que el siguiente error de ejecución

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

Tan pronto como sustituyo con -framework Python/opt/local/Library/Frameworks/Python.framework/Python cosas parecen funcionar como se espera.

¿Cómo puedo crear un enlace cmake contra el marco de Python correcta encuentra en

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

en lugar de la del sistema en

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

?

Respuesta

5

añadiendo la siguiente en ~/.bash_profile

export DYLD_FRAMEWORK_PATH=/opt/local/Library/Frameworks 

fija el problema, al menos temporalmente. Aparentemente, esta inconsistencia entre el intérprete python y el framework python utilizado por cmake es un error que debería corregirse en la nueva versión.

1

No estoy íntimamente familiarizado con CMake, pero con la versión de Apple de gcc/ld, puede pasar el indicador -F para especificar una nueva ruta de búsqueda de marcos. Por ejemplo, -F/opt/local/Library/Frameworks buscará en el directorio frameworks de MacPorts. Si puede especificar dicho indicador con CMake, puede resolver su problema.

Cuestiones relacionadas