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

xax*_*xon 3 c++ makefile cmake

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

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

要清楚,我正在寻找一个能够解释cmake使用规则的黑客或者某人.使用命令行gcc/clang,环境是linux/os x.

MSa*_*ers 6

cmake是一个makefile生成器(以及它可以生成的其他东西).这就是你建造的原因make.

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

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