如果头文件被更改然后恢复,如何停止/欺骗 cmake 不重建

How to stop/trick cmake into not rebuilding if a header file was changed then reverted?

本文关键字:何停止 欺骗 cmake 重建 恢复 文件 然后 如果      更新时间:2023-10-16

如果我不小心更改了头文件,保存它,然后将其更改回来并重新保存,如何阻止 cmake 检测更改并重建其所有依赖项。 通常我什至不知道它被修改了,直到我重新运行make并开始重建过程。

我尝试了一些天真的手动时间戳更改,但没有运气。

需要明确的是,我正在寻找一个黑客或可以解释cmake使用规则的人。 环境是使用命令行 gcc/clang 的 linux/os x。

cmake是一个makefile生成器(它可以生成其他东西)。这就是为什么你用make .

你看到的行为确实是标准make行为。这是一个通用的构建工具;每当目标过时时,它都会通过应用该目标的"配方"来重建任何"目标"。这些目标和食谱都是cmake写的。

你可以询问make它将重建哪些目标(make --dry-run),并更新标头的时间戳以早于所有目标(touch -r oldest_target header.h)。或者,为了避免确定哪个目标最旧,请交替使用第一个目标make --dry-runtouch -r,直到make --dry-run不再返回任何目标。