2024-10-05 13:24:55 发布
网友
大多数可用于构建Python扩展模块的文档 使用distutils,但我希望通过使用适当的 python autoconf&自动生成宏。在
我想知道是否有一个开源项目可以做到 正是这个。我发现的大多数人最后都依赖于设置.py文件。 使用这种方法是可行的,但不幸的是最终重建了整个 每当我对模块源文件进行修改时,源目录树。在
所有的PyGTK扩展都使用自动工具,所以如果PyGTK方面没有为您杀死所有的东西,那么值得一看PyGTK source code。另外,here is one I wrote which is more simple.
假设您有一个目录为src的项目,那么让我们按照以下步骤使用自动工具构建和打包python扩展:
src
首先,你需要创建一个生成文件.am在项目的根目录中,基本上(但不是唯一地)列出也应该处理的子目录。你最终会得到这样的结果:
SUBDIRS = src
第二个位于src目录中的命令将包含实际编译python扩展的指令。它看起来像这样:
此文件必须在项目的根目录中创建,并且必须列出项目需要构建的所有库、程序或任何类型的工具,例如编译器、链接器、库等
懒惰的人,像我一样,通常不会从头开始创建它,我更喜欢使用autoscan工具,它可以查找您正在使用的东西并生成一个configure.scan文件,该文件可作为实际configure.ac的基础。在
autoscan
configure.scan
configure.ac
要通知automake您将需要python素材,可以将其添加到您的configure.ac:
automake
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有一个内置的扩展,它知道如何处理python的东西,您只需要将它添加到您的configure.ac文件中,然后利用Makefile.am中的这一特性。在
Makefile.am
PyGtk绝对是一个很棒的例子,但是它相当大,所以您可能需要检查另一个项目,比如Guake
所有的PyGTK扩展都使用自动工具,所以如果PyGTK方面没有为您杀死所有的东西,那么值得一看PyGTK source code。另外,here is one I wrote which is more simple.
假设您有一个目录为
src
的项目,那么让我们按照以下步骤使用自动工具构建和打包python扩展:创建生成文件.am文件
首先,你需要创建一个生成文件.am在项目的根目录中,基本上(但不是唯一地)列出也应该处理的子目录。你最终会得到这样的结果:
第二个位于
^{pr2}$src
目录中的命令将包含实际编译python扩展的指令。它看起来像这样:写配置.ac在
此文件必须在项目的根目录中创建,并且必须列出项目需要构建的所有库、程序或任何类型的工具,例如编译器、链接器、库等
懒惰的人,像我一样,通常不会从头开始创建它,我更喜欢使用
autoscan
工具,它可以查找您正在使用的东西并生成一个configure.scan
文件,该文件可作为实际configure.ac
的基础。在要通知
automake
您将需要python素材,可以将其添加到您的configure.ac
:总结
基本上,
automake
有一个内置的扩展,它知道如何处理python的东西,您只需要将它添加到您的configure.ac
文件中,然后利用Makefile.am
中的这一特性。在PyGtk绝对是一个很棒的例子,但是它相当大,所以您可能需要检查另一个项目,比如Guake
相关问题 更多 >
编程相关推荐