2013-02-24 55 views
2

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

是否有使用的makefile任何好的理由?

您有任何示例可以证明这一点吗?

+3

我不认为你可以做一个脚本平行建设。 – 2013-02-24 22:43:18

+0

是的,你可以,但它很痛苦:http://stackoverflow.com/questions/2791069/how-to-use-parallel-execution-in-a-shell-script – Carl 2013-02-24 22:54:14

+0

想想依赖规则。例如,如果头文件被更改,哪些源文件需要重建? – 2013-02-25 02:04:53

回答

11

一个使用makefile的一个主要原因是,它会重新编译只因为你建立你的项目的最后时间,这已经改变了源文件。编写一个shell脚本来完成这个工作比编写makefile要花费更多的工作。

1
  1. 磨损键盘上。
  2. 防止其采取的年龄编译一切
  3. 更容易进行调试和生产

编译作为例子之间改变 - 见大多数GNU项目C写/ C++

1

你可能想利用一看autotools。这将为你制作一个Makefile,同时它们也可以帮助代码可移植性。但是,您必须制作一些相对简单的模板文件,自动工具将用它来构建配置文件,最终用户可以运行./configure [options];使。它们为最终用户可能期望的makefile提供了许多功能。对于一个很好的介绍,请参阅:http://www.freesoftwaremagazine.com/articles/brief_introduction_to_gnu_autotools

1

比方说,你做的写一个shell脚本。它会工作,你会很高兴。你会继续使用它,每获得一次机会。您将向其添加参数以允许您指定选项。你也会注意到它总是重新编译所有的东西。所以你会试着让它变得更聪明,以便它只重新编译已经改变的文件。实际上,你将要做的是编写你自己的制作系统。

只要你有充足的理由去做,这没什么问题。例如:现有的制造解决方案不能很好地完成X,所以你写了一个来解决这个问题。

你,但是,没有不能被现有的进行系统需要解决的问题(或者至少,这听起来像你不:))。您试图解决的问题已经解决。只要阅读和使用的解决方案 - 一个make文件:

因此,要回答你的问题,是的,有很多 - 其中大部分你不会知道,直到你需要的功能。当你这样做时,你会感激它已经做到了你想要的。

这与您在代码中使用库时适用的逻辑相同。

+1

..不要重新发明轮子。顺便说一下,切片面包后的最佳发明是轴。 – 2013-02-24 22:52:06

相关问题