【发布时间】:2013-08-29 13:04:04
【问题描述】:
我从事涉及大量c++ 文件的项目。我是出于好奇才问这个问题的。
通常在完成make 之后,将单独编译正在修改的特定c++ 文件以供后续makes 使用。有时我会在单个 c++ 文件中遇到一个小的修改,结果编译几乎所有其他 c++ 文件和最终的可执行文件。
Makefile编译其他未修改的c++文件的原因是什么?
【问题讨论】:
-
目标依赖。考虑在 just 该目标上运行 make,然后运行测试 make 以查看为什么所有其他文件突然不符合它们的规则。在没有看到 makefile 的情况下,其他任何事情都是纯粹的猜测。
-
我用作廉价替代品的透明塑料球说它可能是您的 makefile 中的第 17、43 或 68 行错误。但是我的塑料球经常不正确,所以我不会太在意。如果您发布您的 makefile 可能会更好 - 或者更好的是,制作它的简单版本(但确保它仍然存在相同的问题)然后发布。
-
@MatsPetersson 我很嫉妒。我的塑料球通常很雾;一个真正的混蛋,可以从中得到任何东西。你说的很清楚让我很难过=(
-
我自己的塑料球告诉我,我需要缓存和 MySQL,我可以像谷歌一样,做得更好。
-
此类事情的另一个常见原因是时间戳偏差和 NFS。如果您的系统时钟关闭,它可能会导致
make认为源文件比生成的文件更新并意外重建。