为什么在更改一个文件时'make'会重新编译几个文件?

时间:2011-12-07 07:13:57

标签: c++ makefile

当我编辑一个源文件时,是否正在运行make重新编译该文件以及该文件所依赖的所有文件?如果是这样,为什么?

3 个答案:

答案 0 :(得分:4)

如果该文件在其他文件中是#included,那么期望那些其他文件重新编译是合理的,并且你不希望你的程序的“一半”是新的而另一半是“半”旧的。

答案 1 :(得分:4)

<强>为什么吗
因为这是拥有Make文件的全部目的 如果修改了特定的源文件,则应使用修改后的文件重新编译所有相关文件,以便所有相关文件引用相同的源并且整个代码库同步。

如何吗
make实用程序检查时间戳以检查修改了哪些文件。创建make文件时需要指定依赖关系规则,它明确告诉实用程序哪些其他文件依赖于特定文件。因此,使用这些规则Make也会编译所有相关文件,以便生成的二进制文件引用相同的更新代码。

答案 2 :(得分:0)

  

当我编辑一个源文件时,是否正在运行make重新编译该文件   加上那个依赖的所有文件?如果是这样,为什么?

糟糕的makefile可能会发生(你还没有发布它的样子)。

或者源文件包含模板的实现,并且包含在某处。