使用makefile有什么好的理由吗? 在C++中,我可以通过使用shell脚本来实现相同的结果,在这里编写所有编译指令。所以我的问题是:

使用makefile有什么好的理由吗? 在C++中,我可以通过使用shell脚本来实现相同的结果,在这里编写所有编译指令。所以我的问题是:,c++,makefile,C++,Makefile,使用makefile有什么好的理由吗 您是否有任何示例来演示这一点?使用makefile的主要原因之一是,它将只重新编译自上次构建项目以来已更改的源文件。编写一个shell脚本来完成这项工作将比编写makefile花费更多的工作 键盘上的磨损 防止编译所有内容花费很长时间 更容易在编译调试和生产之间进行更改 关于示例,请参阅大多数用C/C++编写的GNU项目。您可能想看看autotools。这将为您创建一个Makefile,同时它们还可以帮助实现代码的可移植性。但是,您必须制作一些相对简单的模板

使用makefile有什么好的理由吗


您是否有任何示例来演示这一点?

使用makefile的主要原因之一是,它将只重新编译自上次构建项目以来已更改的源文件。编写一个shell脚本来完成这项工作将比编写makefile花费更多的工作

  • 键盘上的磨损
  • 防止编译所有内容花费很长时间
  • 更容易在编译调试和生产之间进行更改

  • 关于示例,请参阅大多数用C/C++编写的GNU项目。

    您可能想看看autotools。这将为您创建一个Makefile,同时它们还可以帮助实现代码的可移植性。但是,您必须制作一些相对简单的模板文件,自动工具将使用这些模板文件构建配置文件,最终用户可以运行。/configure[options];制作它们为makefile提供了许多最终用户可能期望的特性。有关详细介绍,请参见:

    假设您确实编写了一个shell脚本。它会起作用,你会很开心。只要有机会,你就会继续使用它。您将向其中添加参数以允许您指定选项。您还会注意到,它一直在重新编译所有内容。因此,您将尝试使其更智能,以便它只重新编译已更改的文件。实际上,您将要做的是编写自己的make系统

    只要你有充分的理由这么做就好。例如:现有的make解决方案不能很好地解决X问题,所以您编写了一个解决方案来解决这个问题

    但是,您没有一个现有make系统无法解决的问题(或者至少,听起来您没有:)。你要解决的问题已经解决了。只需阅读并使用解决方案-生成文件:)

    所以,要回答你的问题,是的,有很多——其中大部分在你需要功能之前你不会意识到。当你这样做的时候,你会感激它已经做了你想要的


    这与在代码中使用库的逻辑相同

    我认为你不能用脚本来并行构建。是的,你可以,但这很痛苦:想想依赖规则。例如,如果更改了头文件,则需要重建哪些源文件?。。不要重新发明轮子。顺便说一句,在切片面包之后最好的发明是车轴。