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