为什么缓存有时会重置?

时间:2018-03-08 22:54:35

标签: cmake

例如,当我更改编译器时,整个缓存被删除并需要重新配置。我理解像编译器标志这样的东西需要重置但为什么整个缓存?

1 个答案:

答案 0 :(得分:1)

将我的评论转化为答案

消息本身

CMake消息

  

“您已经更改了需要删除缓存的变量。配置将重新运行,您可能需要重置一些变量。以下变量已更改:...

转换为类似

的内容
  

“CMake尝试表现并且没有告诉您,对于类似的更改,您必须删除二进制输出目录并从头开始。”

此功能很久以前就发布在"ENH: fix for bug 6102, allow users to change the compiler" commit上,并且使用"Delete entire CMakeFiles directory when deleting CMakeCache.txt" commit进行了改进:

  

通过教导cmCacheManager :: DeleteCache删除它来解决这个问题   整个CMakeFiles目录在删除现有时都是递归的   CMakeCache.txt。这将完全重置构建树以使用a进行配置   新编译器。

为什么要删除所有内容?

如果更改编译器或升级到较新版本的CMake,则不能简单地调整生成的构建环境。

必须删除并重新运行所有缓存配置 - 作为基于编译器和平台信息的评估或搜索结果。 CMake可能根本不知道哪个缓存变量在新环境中仍然有效。