【问题标题】:What is ltmain.sh, and why does automake say it is missing? What is a good auto (make/conf/etc) generator?什么是 ltmain.sh,为什么 automake 说它丢失了?什么是好的自动(make/conf/etc)生成器?
【发布时间】:2011-02-17 23:19:34
【问题描述】:

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

【问题讨论】:

标签: emacs autoconf automake anjuta


【解决方案1】:

生成一组非常简单的自动工具文件非常容易。这是一个(非常基本的)示例。运行这些之后,您应该会在目录中获得 ltmain.sh 的副本,然后您就可以运行配置脚本了:

$ mkdir 示例 $ cd 样本 $ echo 'int main( void ) { return 0; }' > foo.c $ echo 'bin_PROGRAMS = foo' > Makefile.am $自动扫描 $ mv configure.scan configure.ac $ # 编辑 configure.ac,添加 AM_INIT_AUTOMAKE([foreign]) $ # 和 LT_INIT,设置项目名称和 bug-report-address $自动重新配置-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 文件,你可以从菜单中选择 Project->Build->build currentproject,它会创建和设置 Automake 所需的一切,除了运行所有的其他 automake需要的命令。

    最后,在某处有一个“运行”选项可以运行您的程序。

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • 这没有回答问题,因此是对不同主题的完全不相关的意见。
      • git 确实使用了 autoconf。并且 git 中的 Makefile 远不如等效的 Makefile.am 易于理解。
      • 实际上 automake/autoconf 让事情变得更加更简单,尤其是如果你的目标是 linux,除非你的程序完全是微不足道的。一个 automake 输入文件 (Makefile.am) 很漂亮,并且比等效的 Makefile 更易于编写或理解(但功能更强大)。对于不需要配置的情况,autoconf 输入文件 (configure.ac) 可能很简单,如果需要一些配置,autoconf 是比 ad-hoc 更好的方法似乎可以替代的方法。
      • 顺便说一句,我应该注意到,在过去,自动工具最困难的部分只是弄清楚何时运行哪些工具(并记住要这样做)......但现在, (1) 在一个完整设置的项目中,只需运行configure,生成的 Makefile 具有所有所需的依赖项,此后只需键入 make 或 ( 2) 在“原始”项目(没有配置文件)中,只需先键入autoreconf --install,然后执行(1)。这些天,关于 autotools 唯一真正糟糕的地方是其笨拙的实现——但大多数人并不真正需要关心......
      猜你喜欢
      • 2012-03-06
      • 2011-07-20
      • 1970-01-01
      • 2010-10-30
      • 1970-01-01
      • 2012-06-28
      • 2010-09-08
      • 2010-09-19
      相关资源
      最近更新 更多