Question

La plupart de la documentation disponible pour la construction de modules d'extension Python utilise distutils, mais j’aimerais y parvenir en utilisant le matériel approprié python autoconf & amp; macros automake à la place.

J'aimerais savoir s'il existe un projet open source là-bas qui fait exactement ça. La plupart de ceux que j'ai trouvés finissent par s'appuyer sur un fichier setup.py. L’utilisation de cette approche fonctionne, mais aboutit malheureusement à la reconstruction de l’ensemble arbre source à chaque fois que je modifie les fichiers source du module.

Était-ce utile?

La solution

Toutes les extensions PyGTK utilisent des outils automatiques. Par conséquent, si les aspects PyGTK ne la détruisent pas pour vous, il vaut peut-être la peine de jeter un coup d’œil sur code source PyGTK . En outre, , voici un exemple plus simple.

Autres conseils

Si vous avez un projet avec un répertoire appelé src , suivons donc les étapes suivantes pour obtenir une extension python construite et empaquetée à l'aide de autotools:

Créez les fichiers Makefile.am

Tout d’abord, vous devez créer un fichier Makefile.am à la racine de votre projet. Il répertorie (mais pas exclusivement) les sous-répertoires à traiter. Vous allez vous retrouver avec quelque chose comme ça:

SUBDIRS = src

Le second, à l'intérieur du répertoire src , contiendra les instructions pour compiler réellement votre extension python. Cela ressemblera à ceci:

myextdir = $(pkgpythondir)
myext_PYTHON = file1.py file2.py

pyexec_LTLIBRARIES = _myext.la

_myext_la_SOURCES = myext.cpp
_myext_la_CPPFLAGS = $(PYTHON_CFLAGS)
_myext_la_LDFLAGS = -module -avoid-version -export-symbols-regex initmyext
_myext_la_LIBADD = $(top_builddir)/lib/libhollow.la

EXTRA_DIST = myext.h

Écrivez le fichier configure.ac

Ce fichier doit être créé dans le répertoire racine du projet et doit répertorier toutes les bibliothèques, tous les programmes et tous les types d’outils nécessaires à la construction de votre projet, tels que le compilateur, l’éditeur de liens, les bibliothèques, etc.

Les paresseux, comme moi, ne le créent généralement pas à partir de zéro, je préfère utiliser l'outil autoscan , qui recherche les éléments que vous utilisez et génère un configure.scan. fichier pouvant servir de base à votre véritable configure.ac .

Pour informer automake que vous aurez besoin de choses en python, vous pouvez l'ajouter à votre configure.ac :

.
dnl python checks (you can change the required python version bellow)
AM_PATH_PYTHON(2.7.0)
PY_PREFIX=`$PYTHON -c 'import sys ; print sys.prefix'`
PYTHON_LIBS="-lpython$PYTHON_VERSION"
PYTHON_CFLAGS="-I$PY_PREFIX/include/python$PYTHON_VERSION"
AC_SUBST([PYTHON_LIBS])
AC_SUBST([PYTHON_CFLAGS])

Terminez

Fondamentalement, automake a une extension intégrée qui sait comment traiter les commandes python. Il vous suffit de l'ajouter à votre fichier configure.ac , puis de l'avantage de cette fonctionnalité dans votre Makefile.am .

PyGtk est certainement un exemple formidable, mais il est plutôt volumineux. Par conséquent, vous voudrez peut-être consulter un autre projet, tel que Guake

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top