在 C++ 中,我可以使用编写所有编译指令的 shell 脚本来实现相同的结果。所以我的问题是:
使用makefile有什么好的理由吗?
你有什么例子可以证明这一点吗?
使用 makefile 的主要原因之一是它只会重新编译自上次构建项目以来已更改的源文件。编写一个 shell 脚本来做到这一点比编写 makefile 需要更多的工作。
至于示例 - 查看大多数用 C/C++ 编写的 GNU 项目
您可能想看看自动工具。他们将为您制作一个 Makefile,同时它们也可以帮助您实现代码可移植性。但是,您必须制作一些相对简单的模板文件,自动工具将使用这些模板文件来构建配置文件,并且最终用户可以运行 ./configure [options]; 制作。它们为您的 makefile 提供了最终用户可能期望的许多功能。有关好的介绍,请参见:http ://www.freesoftwaremagazine.com/articles/brief_introduction_to_gnu_autotools
假设您确实编写了一个 shell 脚本。它会起作用,你会很高兴。每次有机会,您都会继续使用它。您将向其添加参数以允许您指定选项。您还会注意到它一直在重新编译所有内容。因此,您将尝试使其更智能,以便仅重新编译已更改的文件。实际上,您将要做的是编写自己的 make 系统。
只要你有充分的理由这样做就可以了。例如:现有的 make 解决方案不能很好地解决 X,因此您编写了一个来解决该问题。
但是,您没有现有的 make 系统无法解决的问题(或者至少,听起来您没有 :) )。你试图解决的问题已经解决了。只需阅读并使用解决方案 - 一个 make 文件 :)
因此,要回答您的问题,是的,有很多 - 在您需要该功能之前,您不会意识到其中的大部分。当你这样做时,你会感激它已经做了你想要的。
这与您在代码中使用库的逻辑相同。