2009-11-11 24 views
7

J'utilise la version macports de python sur un ordinateur Snow Leopard, et en utilisant cmake pour y construire une extension multiplate-forme. Je cherche l'interpréteur Python et les bibliothèques du système en utilisant les commandes suivantes dans CMakeLists.txtTrouver le framework Python correct avec cmake

include(FindPythonInterp) 
include(FindPythonLibs ) 

Cependant, alors que CMake a identifié l'interprète correct dans /opt/local/bin, il essaie de lier contre le mauvais cadre - à savoir le système Python cadre.

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

Et cela provoque l'erreur d'exécution suivant

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

Dès que je remplacerai -framework Python avec /opt/local/Library/Frameworks/Python.framework/Python les choses semblent fonctionner comme prévu.

Comment puis-je faire lien CMake contre le cadre de Python correct trouvé dans

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

plutôt que celui du système dans

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

?

Répondre

5

adjonction, selon l'~/.bash_profile

export DYLD_FRAMEWORK_PATH=/opt/local/Library/Frameworks 

résout le problème au moins temporairement. Apparemment, cette incohérence entre l'interpréteur python et le framework python utilisé par cmake est un bug qui devrait être corrigé dans la nouvelle version.

1

Je ne suis pas intimement familier avec CMake, mais avec la version Apple de gcc/ld, vous pouvez passer l'indicateur -F pour spécifier un nouveau chemin de recherche d'infrastructure. Par exemple, -F/opt/local/Library/Frameworks effectuera une recherche dans le répertoire des frameworks de MacPorts. Si vous pouvez spécifier un tel drapeau en utilisant CMake, cela peut résoudre votre problème.