【问题标题】:How to learn the Joy of Autotools? [closed]如何学习 Autotools 的乐趣? [关闭]
【发布时间】:2011-03-13 14:21:05
【问题描述】:

所以几年前,我花了一些时间去摸索make,并获得了巨大的回报。编写用于构建我的项目和自动化任务的小 makefile 既有趣又富有成效。

当然,缺点是我的 makefile 过于具体,尤其是在涉及平台和库位置时。

所以这就是人们告诉我“自动工具来救援!”的时候。当其他人这样做时,它们似乎确实会起作用(我喜欢下载一些东西并运行 configure && make && sudo make install 并看着它正常工作),但我无法绕过它们。

我查看了一些 configure.acMakefile.am 文件,但我只是不明白发生了什么。我不知道标识符的哪一部分是开发人员的选择,以及哪一部分对自动工具有意义。我不确定我是否理解整个流程和Makefile.in 的意义。我想我只是在从我习惯的系统 (make) 到比它高一两层的系统上碰壁。

谁能告诉我一本教程或书(最好不要过于枯燥),可以教我使用自动工具的乐趣吗?步骤是什么,如何使用它们,如何从头开始编写自己的configure.acMakefile.am?告诉我如何提高效率并与他们一起玩乐?

【问题讨论】:

  • 并没有真正回答您的问题,但您可能也需要考虑 cmake。我发现它比通常的自动工具更容易使用。
  • 作为用户的您学会了使用自动工具的乐趣。现在您将了解它的痛苦:)
  • 我已经厌倦了所有这些自动工具的抨击。我怀疑那些讨厌自动工具的人真的在使用错误的工具来完成这项工作。自动工具旨在使实施 GNU 编码标准和构建约定变得容易。它们并不意味着您可以实现任何您想要的任意工作流程;如果您尝试这样做,那么是的,您会像尝试用锤子固定螺丝一样不开心。如果 GNU 约定不是您想要的,请务必使用 Cmake。
  • 完全同意@ptomato。人们喜欢讨厌自动工具,但 CMake 更糟。对用户来说更闪亮,但更糟。一个特别突出的功能是将列表作为分号分隔的字符串的脑死概念。如果.pc 文件敢于声明多个编译器或链接器标志,这将导致(例如)PKG_CHECK_MODULES 宏失败。分号进入命令行,然后kaboom!
  • @Matt Joiner,你的意思是烹饪的乐趣? ;-)

标签: makefile autotools


【解决方案1】:

我不确定您是否可以从构建系统中获得乐趣...您是否阅读过 Autotools 教程?

http://www.lrde.epita.fr/~adl/autotools.html

关于自动工具有各种各样的资源,问题是它们往往不完整,有点过时等等......

最近的一篇优秀文档是 Autotools Mythbuster,虽然它不是介绍:

http://www.flameeyes.eu/autotools-mythbuster/index.html

【讨论】:

  • +1 链接,谢谢!但我希望你最初的主张是错误的。对于编程(任何足够复杂的构建系统都是编程),我经常认为如果你没有乐趣,那么你做错了。这可能是导致程序员更喜欢最复杂的解决方案的倾向,而一个简单的解决方案可以做到这一点,但这似乎是对适度的投票,而不是其他任何事情。
  • 对我来说,Autotools 教程中最有启发性的部分是哪些文件用于生成哪些其他文件以及它们都应该做什么的图表。那一刻我明白了 Autotools 的乐趣,不再将它们视为巫术。
  • 我非常赞同提到 Alexandre Duret-Lutz 的 Autotools 教程(上述第一个链接)。只需花费一两个小时的时间来完成他出色的幻灯片集,您就会学到足够多的 Autotools 来应对大多数用例。
【解决方案2】:

虽然我认为 elmarco 的回答中提到的 Alexandre Duret-Lutz 的 Autotools 教程是最好的,但您也应该了解 Goat Book:

http://sourceware.org/autobook/

它处理的工具的版本相当旧,但它是一个很好的介绍,并且以合乎逻辑的顺序呈现。它也比教程更完整。在您完成教程之后,它可能最好用作补充阅读。

更新 还有John Calcote's book,2010 年 8 月左右发布,非常好。我不确定整本书是否在该链接上在线,但至少有一部分在线。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-17
    • 2010-09-06
    • 1970-01-01
    • 1970-01-01
    • 2015-07-20
    • 1970-01-01
    • 2010-09-12
    • 1970-01-01
    相关资源
    最近更新 更多