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