什么是ltmain.sh,为什么automake说它不存在?有哪些好的自动化生成工具(make/conf等)?

6

我希望在Linux上开发一个C应用程序,自动生成auto(make/conf/...)工具。 我尝试使用ede和anjuta生成它,但似乎没有生成Makefile.am。 因此,我尝试运行automake,但它显示找不到“ltmain.sh”。 有没有简单的方法生成Linux C / C ++应用程序的基本构建文件? 标准做法是什么? 大多数人自己编写这些文件吗?


1
请阅读此处:http://www.gnu.org/software/hello/manual/autoconf/index.html#Top,该网页包含有关Autoconf的详细信息。 - Anycorn
3个回答

5
生成一个非常简单的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
$ # 编辑configure.ac,添加AM_INIT_AUTOMAKE([foreign])
$ # 和LT_INIT,设置项目名称和错误报告地址
$ autoreconf -ivf

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

2
EDE可以以两种不同的方式与您的Automake文件一起工作。如果您编写自己的automake文件,它将读取并通过UI进行微调。
如果您喜欢,您可以让EDE为您完成整个过程。首先,创建您的第一个C文件,然后当它在磁盘上时,执行:
M-x ede-new RET Automake RET
然后从项目/项目选项菜单中添加一个目标,比如“程序”。
如果填写了C文件,您可以从菜单中选择“项目->构建->从当前项目构建”,它将创建和设置所有必需的Automake内容,以及运行所有所需的其他Automake命令。
最后,在某个地方有一个“运行”选项来运行您的程序。

-4

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

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


这并没有回答问题,因此是关于不同主题的完全无关的观点。 - alternative
Git确实使用autoconf。而且git中的Makefile比相应的Makefile.am难以理解得多。 - William Pursell
2
实际上,如果你的目标是Linux,那么automake/autoconf会使事情变得更加简单,除非你的程序非常琐碎。 automake输入文件(Makefile.am)非常美丽,比等效的Makefile更容易编写或理解(但功能更强大)。对于不需要配置的情况,autoconf输入文件(configure.ac)可能很简单,如果需要一些配置,则autoconf是比其他替代方法更好的选择。 - snogglethorpe
顺便提一下,在旧时代,Autotools 最困难的部分只是弄清楚要运行哪些工具(并记得这样做)……但现在,_(1)_ 在一个完全设置好的项目中,只需运行 configure,生成的 Makefile 就有了所有必要的依赖项,因此只需键入 make 就可以始终执行“正确的操作”,或者 (2) 在一个“原始”的项目(没有 configure 文件)中,首先只需键入 autoreconf --install,然后执行 _(1)_。现在 Autotools 唯一真正糟糕的事情就是它的实现过于老旧 - 但大多数人实际上并不需要关心这个问题... - snogglethorpe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接