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

7jmck4yq  于 2023-03-20  发布在  其他
关注(0)|答案(1)|浏览(154)

我有一个遗留的工作项目,其中包括8000+文件。它包括源代码,但也库,所以它可以独立运行。
然而,当我第一次运行make命令时,它大约需要4个小时,而第二次运行命令时,在添加代码之后,它要快得多,通常需要5-10分钟。我的第一个问题是为什么第二次会更快?
其次,为什么当整个目录被传输到另一台计算机(在make构建之后)时,make命令仍然需要4个小时才能完成,而不是5-10分钟?

6kkfgxo0

6kkfgxo01#

GNU make的主要目的是编译代码,并且不需要重新编译代码。事实上,man make在说明书的第一句话中就指出:
make实用程序的目的是自动确定大型程序的哪些部分需要重新编译,并发出命令重新编译它们。
再往下一点
如果更新依赖于自上次修改目标以来已修改的先决条件文件,或者目标不存在,则将更新作为目标。
这很好地解释了第二次和后续编译的加速。并不是所有的东西都被编译了,而是项目中受代码更改影响的部分。
将源代码(和生成项目)复制到另一台计算机时,修改时间很可能关闭。这将导致make重新编译所有内容。若要防止发生这种情况,请在复制时保留时间戳。

相关问题