मान लीजिए कि आपके पास src
नामक निर्देशिका वाली एक प्रोजेक्ट है, तो आइओटूल का उपयोग करके पाइथन एक्सटेंशन को निर्मित और पैक करने के लिए निम्न चरणों का पालन करें:
Makefile.am फ़ाइलों को बनाएँ
सबसे पहले, आपको अपनी परियोजना की जड़ में एक मेकफ़ाइल.एम बनाना होगा, मूल रूप से (लेकिन विशेष रूप से नहीं) उपनिर्देशिकाओं को सूचीबद्ध करना जिन्हें संसाधित किया जाना चाहिए। आप इस तरह कुछ खत्म कर देंगे:
SUBDIRS = src
दूसरा कोड, src
निर्देशिका के अंदर वास्तव में आपके पायथन एक्सटेंशन को संकलित करने के लिए निर्देश रखेगा। यह इस तरह दिखेगा:
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
Config.ac लिखें
यह फ़ाइल प्रोजेक्ट की मूल निर्देशिका में बनाई जानी चाहिए और सभी पुस्तकालयों, कार्यक्रमों या किसी भी प्रकार के टूल को सूचीबद्ध करना होगा जिसे आपके प्रोजेक्ट को बनाने की आवश्यकता है, जैसे कि कंपाइलर, लिंकर, पुस्तकालय इत्यादि।
मेरे जैसे आलसी लोग, आमतौर पर इसे स्क्रैच से नहीं बनाते हैं, मैं autoscan
टूल का उपयोग करना पसंद करता हूं, जो आपके द्वारा उपयोग की जा रही चीज़ों की तलाश करता है और config.scan
फ़ाइल जिसे आपके वास्तविक config.ac
के आधार के रूप में उपयोग किया जा सकता है।
automake
को सूचित करने के लिए आपको पाइथन सामग्री की आवश्यकता होगी, आप इसे अपने config.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])
लपेटें
असल में, automake
में एक अंतर्निहित एक्सटेंशन है जो जानता है कि पाइथन सामग्री से कैसे निपटें, आपको बस इसे अपने config.ac
फ़ाइल में जोड़ना होगा और फिर इसका लाभ उठाएं यह सुविधा आपके Makefile.am
में है।
PyGtk is definitely an awesome example, but it's pretty big, so maybe you will want to check another project, like Guake