例如,当我更改编译器时,整个缓存被删除并需要重新配置。我理解像编译器标志这样的东西需要重置但为什么整个缓存?
答案 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可能根本不知道哪个缓存变量在新环境中仍然有效。