【发布时间】:2016-09-19 00:04:17
【问题描述】:
我正在努力将一个项目从 scons 转换为 autotools,因为它似乎会自动生成许多在 SConscript 中编写起来很烦人的功能(例如 make uninstall)。
该项目主要基于 c++,但也包括一些用 python 编写的模块。经过大量阅读 autotools 后,我终于可以创建一个共享库,编译并链接一个可执行文件,并安装 c++ 头文件。迷人的。现在到了他们的python部分。通过在 configure.ac 中包含 AM_PYTHON_PATH,我还安装了带有 Makefile.am 文件的 python 模块,例如
autopy_PYTHON=autopy/__init__.py autopy/noindent.py autopy/auto.py
submoda_PYTHON=autopy/submoda/moda.py autopy/submoda/modb.py autopy/submoda/modc.py autopy/submoda/__init__.py
submodb_PYTHON=autopy/submodb/moda.py autopy/submodb/modb.py autopy/submodb/modc.py autopy/submodb/__init__.py
autopydir=$(pythondir)/autopy
submodadir=$(pythondir)/submoda
submodbdir=$(pythondir)/submodb
dist_bin_SCRIPTS=scripts/script1 scripts/script2 scripts/script3
这似乎将我所有的模块和脚本放在适当的位置,但我想知道这是否“正确”,因为安装 python 模块的方式似乎是通过 distutils 的 setup.py 脚本。我在 python 模块中确实有 setup.py 脚本,并且 scons 一直在调用它们,直到我使用 autotools 进入。一种方法优于另一种方法吗?当我使用 autotools 构建时,我还应该使用 setup.py 吗?我想了解人们通常如何使用 autotools 使用 c++ 和 python 模块解决构建问题。我还有很多其他 autotools 问题,但我会留到以后。
【问题讨论】:
-
Autotools 太糟糕了。我什至无法开始......这是一个例子:voices.canonical.com/jussi.pakkanen/2011/09/13/autotools
-
哈。是的,我已经读过那个了。上周我读了很多意见。到目前为止,我并不讨厌 autotools(至少在拔头发的最初几天之后),但我确实讨厌我们当前的 scons 实现。
-
你考虑过使用 cmake 吗?我并不是说这是相反的,老实说,我也不喜欢 cmake 的一些事情。但根据我的经验,cmake 比 autotools 痛苦少得多,它主要是可以工作的,如果你有问题,找到有用的信息并不难。对于自动工具,我绝对不能这么说。
-
我确实考虑过使用 cmake,但安装时需要它似乎很烦人。特别是考虑到我们的软件将在用户没有管理员权限甚至根本不了解安装软件包的计算机集群上大量使用。我想我的一部分也觉得对自动工具有点投入,现在我终于知道如何使用它了。
-
不是关于 scons 的真正问题,所以也许删除那个标签..
标签: python c++ autotools automake distutils