Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Makefile 如何学习自动工具的乐趣?_Makefile_Autotools - Fatal编程技术网

Makefile 如何学习自动工具的乐趣?

Makefile 如何学习自动工具的乐趣?,makefile,autotools,Makefile,Autotools,所以几年前,我花了一些时间摸索制作,并且获得了巨大的回报。编写用于构建项目和自动化任务的小makefile既有趣又高效 当然,缺点是我的makefile过于具体,尤其是在平台和库位置方面 所以这就是人们告诉我“自动工具救援!”的时候,当其他人这么做时,他们当然会这么做(我喜欢下载一些东西并运行configure&&make&&sudo make install,然后看着它正常工作),但我不能对他们掉以轻心 我查看了一些configure.ac和Makefile.am文件,但我不明白发生了什么。我

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

当然,缺点是我的makefile过于具体,尤其是在平台和库位置方面

所以这就是人们告诉我“自动工具救援!”的时候,当其他人这么做时,他们当然会这么做(我喜欢下载一些东西并运行
configure&&make&&sudo make install
,然后看着它正常工作),但我不能对他们掉以轻心

我查看了一些
configure.ac
Makefile.am
文件,但我不明白发生了什么。我不知道标识符的哪一部分是开发人员的选择,哪一部分对自动工具有意义。我不确定我是否了解整个流程以及
Makefile.in
的要点。我想我只是撞上了一堵心理墙,从我习惯的系统(
make
)到上面一两层的东西


有人能给我指点一本教程或书(最好不要太枯燥),教我自动工具的乐趣吗?步骤是什么,如何使用它们,如何从头开始编写自己的
configure.ac
Makefile.am
?告诉我如何有效地使用它们并从中获得乐趣?

我不确定您是否能从构建系统中获得乐趣。。。你读过自动工具教程吗

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

Autotools Mythbuster是一个最新的优秀文档,尽管它不是一个介绍:


< /P> < P>虽然我认为Alexandre Duret Lutz的AutoCo教程中提到的AutMARCo的答案是最好的,但你也应该知道山羊书:

它所涉及的工具的版本相当旧,但这是一个很好的介绍,并且它是按逻辑顺序呈现的。它也比教程更完整。在完成本教程之后,它可能是最好的补充阅读

更新
还有,它是在2010年8月左右出版的,非常好。我不确定整本书是不是在线链接,但至少部分是。

并没有真正回答你的问题,但你可能也想考虑CMADE。我发现它比通常的自动工具简单得多。作为一个用户,你学到了自动工具的乐趣。现在你将了解到这是痛苦的:)我已经厌倦了所有这些对自动工具的抨击。我怀疑那些讨厌自动工具的人在工作中使用了错误的工具。自动工具旨在使GNU编码标准和建筑惯例易于实施。它们并不是为了让你实现你想要的任意工作流程;如果你试图这样做,那么是的,你会像试图用锤子拧紧螺丝一样不高兴。如果GNU约定不是您想要的,请务必使用Cmake。完全同意@ptomato。人们喜欢讨厌自动工具,但CMake更糟糕。对用户来说更亮,但更糟。一个特别突出的特性是它头脑发热的列表概念,即以分号分隔的字符串。例如,如果
.pc
文件敢于声明多个编译器或链接器标志,这会导致
PKG\u CHECK\u MODULES
宏异常失败。分号出现在命令行中,kaboom@马特·乔纳,你是说烹饪的乐趣吗?;-)+1为链接,谢谢!但我希望你最初的主张是错误的。对于编程(任何足够复杂的构建系统都是编程),我经常认为如果你没有乐趣,那你就是做错了。这可能是导致程序员倾向于选择最复杂的解决方案而不是简单的解决方案的同一个趋势,但这似乎是对适度的投票,而不是其他任何东西。Autotools教程中对我最有启发性的部分是关于哪些文件用于生成哪些其他文件的图表,以及他们的使命。那一刻我明白了自动工具的乐趣,不再把它们视为巫毒。我非常赞同Alexandre Duret Lutz的自动工具教程(前面提到的第一个链接)。只需花费一两个小时的时间,您就可以通过他的优秀幻灯片集学习到足够多的自动工具,满足大多数用例的需要。