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

时间:2010-05-11 03:34:56

标签: emacs autoconf automake anjuta

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

3 个答案:

答案 0 :(得分:4)

生成一组非常简单的autotool文件非常简单。这是一个(非常基本的)例子。运行这些之后,您应该在目录中获得ltmain.sh的副本,并且您将全部设置为运行configure脚本:


$ mkdir sample
$ cd sample
$ echo 'int main( void ) { return 0; }' > foo.c
$ echo 'bin_PROGRAMS = foo' > Makefile.am
$ autoscan
$ mv configure.scan configure.ac
$ # edit configure.ac, add AM_INIT_AUTOMAKE([foreign])
$ # and LT_INIT, set project name and bug-report-address
$ autoreconf -ivf

请注意,在此示例中,libtool实际上不是必需的 这个例子只是构建一个简单的应用程序。但你问过 ltmain.sh,这是一个libtool的东西,所以需要LT_INIT 解决问题的那一部分。如果你想建立 一个库,将bin_PROGRAMS更改为lib_LTLIBRARIES。

答案 1 :(得分:1)

EDE可以通过两种不同的方式处理您的Automake文件。如果您编写自己的automake文件,它将读取它们,并通过UI调整它们。

如果您愿意,可以让EDE为您完成整件事。首先,创建您的第一个C文件,然后当它在磁盘上时,执行:

M-x ede-new RET Automake RET

然后从项目/项目选项菜单中添加目标,如“程序”。

如果你填写你的C文件,你可以从菜单中选择Project-> Build-> build currentproject,它将创建和设置Automake所需的一切,除了运行所有的需要misc automake命令。

最后,在运行程序的地方有一个“运行”选项。

答案 2 :(得分:-4)

我认为根本不使用autoconf和automake - 它们的复杂性超过了它们的好处,特别是如果你只针对Linux。

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