为什么make的结果不能跨计算机共享

SAP*_*SAP 3 c++ gnu-make

我有一个遗留工作项目,其中包含 8000 多个文件。它包括源代码和库,因此可以独立运行。

但是,当我第一次运行 make 命令时,大约需要 4 小时,而在添加代码后第二次执行该命令要快得多,通常需要 5-10 分钟。我的第一个问题是为什么第二次更快?

其次,为什么当整个目录被转移(在 make 构建之后)到另一台计算机时,make 命令仍然需要 4 小时而不是 5-10 分钟才能完成?

Fri*_*ich 5

GNU make 的主要目的是编译代码,并且无需在不更改的情况下重新编译代码。事实上,man make在描述的第一句话中就说得对:

make 实用程序的目的是自动确定大型程序的哪些部分需要重新编译,并发出重新编译它们的命令。

再往下一点:

如果目标依赖于自上次修改目标以来已修改的先决条件文件,或者目标不存在,则 make 更新目标。

这几乎解释了第二次及后续编译的加速。并非所有内容都会被编译,而只会编译受代码更改影响的项目部分。

当您将源代码(和构建工件)复制到另一台计算机时,修改时间很可能会关闭。这将导致 make 重新编译所有内容。为了防止这种情况发生,请在复制时保留时间戳。