什么是 ltmain.sh,为什么 automake 说它丢失了?什么是好的自动(make/conf/etc)生成器?

ger*_*rsh 5 emacs automake autoconf anjuta

我只想用自动生成的 auto(make/conf/...) 东西在 linux 中开发一个 C 应用程序。我尝试用 ede 和 anjuta 生成它,但它似乎没有生成 Makefile.am。所以,我尝试运行 automake,它说找不到“ltmain.sh”。是否有一些易于为 linux C/C++ 应用程序生成基本构建文件的方法。什么是标准做法?大多数人自己编写这些文件吗?

Wil*_*ell 5

生成一组非常简单的自动工具文件非常容易。这是一个(非常基本的)示例。运行这些后,您应该在目录中获得 ltmain.sh 的副本,并且您将准备好运行配置脚本:

$ mkdir 样本
$ 光盘样本
$ echo 'int main( void ) { return 0; }' > foo.c
$ echo 'bin_PROGRAMS = foo' > Makefile.am
$ 自动扫描
$ mv 配置.扫描配置.ac
$ # 编辑configure.ac,添加AM_INIT_AUTOMAKE([foreign])
$# 和 LT_INIT,设置项目名称和 bug-report-address
$ autoreconf -ivf

请注意,在此示例中,libtool 实际上不是必需的,因为该示例只是构建一个简单的应用程序。但是您询问了 ltmain.sh,这是 libtool 的事情,因此需要 LT_INIT 来解决问题的这一部分。如果要构建库,请将 bin_PROGRAMS 更改为 lib_LTLIBRARIES。


off*_*by1 -3

我会考虑根本不使用 autoconf 和 automake —— 它们的复杂性超过了它们的好处,特别是如果您只针对 Linux。

请注意,例如“git”根本不使用它们;相反,它只是有一个中等复杂(但易于理解)的 Makefile。

  • 实际上,automake/autoconf 使事情变得更简单,特别是如果您的目标是 Linux,除非您的程序完全微不足道。automake 输入文件(`Makefile.am`)非常漂亮,并且比等效的 `Makefile` 更容易编写或理解(而且功能更强大)。对于实际上不需要配置的情况,autoconf 输入文件(`configure.ac`)可能很简单,如果需要某些配置,autoconf 是一种比临时方法更好的方法,临时方法似乎是另一种选择。 (2认同)