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...