J'ai 2 versions de python installées, mais cmake utilise une version plus ancienne. Comment forcer cmake à utiliser la version la plus récente?
Vous pouvez essayer l'un ou l'autre en fonction de vos besoins:
find_package( PythonInterp 2.7 REQUIRED )
find_package( PythonLibs 2.7 REQUIRED )
Voir: CMake docs
Essayez d'ajouter -DPYTHON_EXECUTABLE:FILEPATH=/path/to/python2.7
Il pourrait y avoir un problème de chemin?
Vous pouvez également spécifier le chemin d'accès à votre bibliothèque python. Utilisez la version de votre choix:
cmake -DPYTHON_LIBRARIES=/Library/Frameworks/Python.framework/Versions/2.7/lib/libpython2.7.dylib .
J'ai eu un problème similaire et je l'ai résolu en utilisant la réponse de Paul comme allusion. J'avais besoin d'utiliser python2.7
pour compiler une bibliothèque plus ancienne, mais cmake
continue de récupérer mes bibliothèques python3.2
(et mon exécutable).
D'abord, j'ai exécuté cmake
avec les options par défaut, puis modifié le fichier CMakeCache.txt
qu'il a généré. Je l'ai fait principalement parce que je ne connaissais pas les incantations -D...
propres à provoquer cmake
pour obtenir la bibliothèque Python et les chemins d'accès, etc.
Dans mon CmakeCache.txt
, j'ai trouvé des lignes comme celle-ci
Chemin vers un programme
PYTHON_EXECUTABLE:FILEPATH=/usr/bin/python
Chemin vers un répertoire
PYTHON_INCLUDE_DIR:PATH=/usr/include/python3.2
Chemin vers une bibliothèque
PYTHON_LIBRARY:FILEPATH=/usr/lib/libpython3.2.so
Et remplacé chaque occurrence de python3.2
par python2.7
. J'ai également dû renommer le PYTHON_EXECUTABLE
pour utiliser python2.7
, car python
est un lien symbolique vers python3.2
sur mon système.
Ensuite, je répète cmake
. Comme il préfère ses valeurs en cache à la recherche des bibliothèques, cela devrait fonctionner dans tous les cas. Au moins, il l'a fait dans le mien.
J'utilise anaconda (python 2.7.8) ainsi que python 2.7.6.
J'ai essayé -DPYTHON_EXECUTABLE:FILEPATH=$ANACONDA_HOME/bin
, mais la version 1.4 a été trouvée (bizarre :).
Ma solution le change en PYTHON_EXECUTABLE:
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -DBUILD_TIFF=ON \
-DPYTHON_LIBRARY=$ANACONDA_HOME/lib/libpython2.7.so \
-DPYTHON_INCLUDE_DIR=$ANACONDA_HOME/include/python2.7/ \
-DPYTHON_EXECUTABLE=$ANACONDA_HOME/bin/python
Mon cas d'utilisation était un projet assez volumineux dans lequel les classes C++ étaient rendues disponibles pour les scripts Python via Boost.Python
. Après avoir lutté contre les diverses bizarreries de l'interpréteur et de la détection de bibliothèque Python de CMake, j'ai finalement abandonné et lancé le mien. Mon approche est basée sur une version légèrement post-modifiée du script python-config
qui est parfois (mais pas toujours!) Insérée dans un environnement virtuel nouvellement créé ( voir cet article SO dans pyvenv
pour ces questions, mais je m'éloigne du sujet). Ce script est appelé par un petit extrait de code CMake pyconfig.cmake
. Les deux sont disponibles gratuitement sur le dépôt GitHub cmake-python-config .
Avertissement: Les scripts supposent que vous avez un interpréteur Python 3 dans votre PATH
. La détection de Python 2 n’est pas tentée. Les scripts ne pas tentent de trouver tout versions installées de Python3.