<p>假设您有一个目录为<code>src</code>的项目,那么让我们按照以下步骤使用自动工具构建和打包python扩展:</p>
<h2>创建生成文件.am文件</h2>
<p>首先,你需要创建一个生成文件.am在项目的根目录中,基本上(但不是唯一地)列出也应该处理的子目录。你最终会得到这样的结果:</p>
<pre><code>SUBDIRS = src
</code></pre>
<p>第二个位于<code>src</code>目录中的命令将包含实际编译python扩展的指令。它看起来像这样:</p>
^{pr2}$
<h2>写配置.ac在</h2>
<p>此文件必须在项目的根目录中创建,并且必须列出项目需要构建的所有库、程序或任何类型的工具,例如编译器、链接器、库等</p>
<p>懒惰的人,像我一样,通常不会从头开始创建它,我更喜欢使用<code>autoscan</code>工具,它可以查找您正在使用的东西并生成一个<code>configure.scan</code>文件,该文件可作为实际<code>configure.ac</code>的基础。在</p>
<p>要通知<code>automake</code>您将需要python素材,可以将其添加到您的<code>configure.ac</code>:</p>
<pre><code>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])
</code></pre>
<h2>总结</h2>
<p>基本上,<code>automake</code>有一个内置的扩展,它知道如何处理python的东西,您只需要将它添加到您的<code>configure.ac</code>文件中,然后利用<code>Makefile.am</code>中的这一特性。在</p>
<p>PyGtk绝对是一个很棒的例子,但是它相当大,所以您可能需要检查另一个项目,比如<a href="http://github.com/Guake/Guake" rel="noreferrer">Guake</a></p>