【问题标题】:What is the CMake cache?什么是 CMake 缓存?
【发布时间】:2018-11-06 00:55:48
【问题描述】:

什么是 CMake 缓存?

我正在阅读 cmake 手册,并且偶尔会遇到术语 cmake 缓存。比如这一段:

-C <initial-cache> 预加载脚本以填充 缓存

当 cmake 第一次在空的构建树中运行时,它会创建一个 CMakeCache.txt 文件并使用可自定义的设置填充它 该项目。此选项可用于指定从哪个文件 在第一次通过项目的 cmake 之前加载 缓存条目 列表文件。加载的条目优先于项目的默认值 价值观。给定的文件应该是一个包含 SET 的 CMake 脚本 使用 CACHE 选项的命令,而不是 cache-format 文件。

这个缓存是什么?
有不同类型的缓存吗?
或者更好的问题是:一般来说什么是缓存?

另外,缓存的重要性是什么?
在处理缓存时是否有某些注意事项?
例如,当你重新启动计算机时,缓存是否会重置?

【问题讨论】:

标签: caching cmake


【解决方案1】:

CMake 缓存是指一组持久变量 - 持久保存在构建目录中名为 CMakeCache.txt 的文件中。其中包括诸如用户可配置选项之类的东西,它们定义了项目的某些行为。例如,您可以在构建目录中运行cmake -D CMAKE_BUILD_TYPE=Release . 并找到保存在 CMakeCache.txt 中的变量。

CMake 只有一种缓存。第一次配置构建后创建并保存到CMakeCache.txt,正常使用下不会自行重置。

【讨论】:

  • 因此不应使用 CMake 缓存来存储包检测数据,因为如果用户安装额外的包然后重新运行 CMake,这可能会导致值过时,对吗?
  • 我不完全理解这个问题。我相信包检测信息实际上存储在 CMake 缓存中。如果您在 CMake 脚本中有 find_package 语句并且找到了包,则这些变量将保存在缓存中。
  • 我真正的问题是:如果我运行 CMake,然后安装一个可选的依赖项,然后重新运行 CMake,它会检测到该软件包已安装吗?还是需要手动删除缓存?
  • 我相信是的,CMake 每次都会运行find_package 命令并在安装了新包时对缓存进行更改。
猜你喜欢
  • 2010-10-07
  • 2015-01-12
  • 1970-01-01
  • 2012-05-07
  • 2020-05-16
  • 2012-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多