load_cache¶
从另一个项目的 CMakeCache.txt 缓存文件中加载值。这对于依赖于在单独目录树中构建的另一个项目的项目很有用。
此命令有两个签名。推荐的签名是
- load_cache(<build-dir> READ_WITH_PREFIX <prefix> <entry>...)¶
从指定的
<build-dir>构建目录加载缓存文件,并检索列出的缓存条目。检索到的值存储在局部变量中,其名称由提供的<prefix>进行前缀处理。这仅读取缓存值;它不会创建或修改本地项目的缓存中的条目。READ_WITH_PREFIX <prefix>对于每个缓存
<entry>,都会创建一个局部变量,该变量使用指定的<prefix>加上条目名称。
此签名也可以在
cmake -P脚本模式中使用。
以下命令签名强烈不推荐使用,但为了向后兼容性仍提供
- load_cache(<build-dir> [EXCLUDE <entry>...] [INCLUDE_INTERNALS <entry>...])¶
此形式从指定的
<build-dir>构建目录加载缓存文件,并将所有非内部缓存条目导入到本地项目的缓存中,作为内部缓存变量。默认情况下,只导入非内部条目,除非使用了INCLUDE_INTERNALS选项。选项包括
EXCLUDE <entry>...此选项可用于在导入值时排除给定的非内部缓存条目列表。
INCLUDE_INTERNALS <entry>...此选项可用于提供一个内部缓存条目列表,以包含在非内部缓存条目之外。
此签名只能在 CMake 项目中使用。不支持脚本模式。
注意
与加载外部项目的缓存文件并手动访问变量相比,更健壮、更方便的方法是使用外部项目中的 export() 命令(如果可用)。这允许项目以结构化、可维护的方式提供其目标、配置或功能,从而使集成更简单、错误更少。
示例¶
从另一个项目读取特定的缓存变量并将其存储为局部变量
load_cache(
path/to/other-project/build-dir
READ_WITH_PREFIX prefix_
OTHER_PROJECT_CACHE_VAR_1
OTHER_PROJECT_CACHE_VAR_2
)
message(STATUS "${prefix_OTHER_PROJECT_CACHE_VAR_1")
message(STATUS "${prefix_OTHER_PROJECT_CACHE_VAR_2")
# Outputs:
# -- some-value...
# -- another-value...
使用已弃用的签名读取另一个项目的所有非内部缓存条目,并将其存储为内部缓存变量
load_cache(path/to/other-project/build-dir)
message(STATUS "${OTHER_PROJECT_CACHE_VAR_1")
message(STATUS "${OTHER_PROJECT_CACHE_VAR_2")
# Outputs:
# -- some-value...
# -- another-value...
使用已弃用的签名排除特定的非内部缓存条目并包含内部条目
load_cache(
path/to/other-project/build-dir
EXCLUDE OTHER_PROJECT_CACHE_VAR_2
INCLUDE_INTERNALS OTHER_PROJECT_INTERNAL_CACHE_VAR
)
message(STATUS "${OTHER_PROJECT_CACHE_VAR_1")
message(STATUS "${OTHER_PROJECT_CACHE_VAR_2")
message(STATUS "${OTHER_PROJECT_INTERNAL_CACHE_VAR}")
# Outputs:
# -- some-value...
# --
# -- some-internal-value...