我希望在Linux上开发一个C应用程序,自动生成auto(make/conf/...)工具。 我尝试使用ede和anjuta生成它,但似乎没有生成Makefile.am。 因此,我尝试运行automake,但它显示找不到“ltmain.sh”。 有没有简单的方法生成Linux C / C ++应用程序的基本构建文件? 标准做法是什么? 大多数人自己编写这些文件吗?
我希望在Linux上开发一个C应用程序,自动生成auto(make/conf/...)工具。 我尝试使用ede和anjuta生成它,但似乎没有生成Makefile.am。 因此,我尝试运行automake,但它显示找不到“ltmain.sh”。 有没有简单的方法生成Linux C / C ++应用程序的基本构建文件? 标准做法是什么? 大多数人自己编写这些文件吗?
$ 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。
我会考虑不使用autoconf和automake,它们的复杂性超过了它们的益处,特别是如果你只针对Linux。
请注意,例如“git”根本没有使用它们;相反,它仅有一个中度复杂(但可理解的)的Makefile。
Makefile.am
)非常美丽,比等效的Makefile
更容易编写或理解(但功能更强大)。对于不需要配置的情况,autoconf输入文件(configure.ac
)可能很简单,如果需要一些配置,则autoconf是比其他替代方法更好的选择。 - snogglethorpeconfigure
,生成的 Makefile 就有了所有必要的依赖项,因此只需键入 make 就可以始终执行“正确的操作”,或者 (2) 在一个“原始”的项目(没有 configure 文件)中,首先只需键入 autoreconf --install
,然后执行 _(1)_。现在 Autotools 唯一真正糟糕的事情就是它的实现过于老旧 - 但大多数人实际上并不需要关心这个问题... - snogglethorpe