/
niceSOFT
/
cmake
Обзор
Документация
Войти
/
niceSOFT
/
cmake
Код
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
Help/command/load_cache.rst
110 строк
3 KB
Peter Kokot
load_cache: Add note about export()
28 янв 2025, 17:22
Не верифицирован
28 янв 2025, 17:22
477737b
Код
Авторство
О чём код?
load_cache ---------- Load in the values from another project's ``CMakeCache.txt`` cache file. This is useful for projects that depend on another project built in a separate directory tree. This command has two signatures. The recommended signature is: .. signature:: load_cache(<build-dir> READ_WITH_PREFIX <prefix> <entry>...) :target: READ_WITH_PREFIX Loads the cache file from the specified ``<build-dir>`` build directory and retrieves the listed cache entries. The retrieved values are stored in local variables, with their names prefixed by the provided ``<prefix>``. This only reads the cache values; it does not create or modify entries in the local project's cache. ``READ_WITH_PREFIX <prefix>`` For each cache ``<entry>``, a local variable is created using the specified ``<prefix>`` followed by the entry name. This signature can be also used in :option:`cmake -P` script mode. The following signature of this command is strongly discouraged, but it is provided for backward compatibility: .. signature:: load_cache(<build-dir> [EXCLUDE <entry>...] [INCLUDE_INTERNALS <entry>...]) :target: raw This form loads the cache file from the specified ``<build-dir>`` build directory and imports all its non-internal cache entries into the local project's cache as internal cache variables. By default, only non-internal entries are imported, unless the ``INCLUDE_INTERNALS`` option is used. The options are: ``EXCLUDE <entry>...`` This option can be used to exclude a given list of non-internal cache entries when importing values. ``INCLUDE_INTERNALS <entry>...`` This option can be used to provide a list of internal cache entries to include in addition to the non-internal cache entries. This signature can be used only in CMake projects. Script mode is not supported. .. note:: Instead of loading the outside project's cache file and manually accessing variables, a more robust and convenient approach is to use the :command:`export` command in the outside project, when available. This allows the project to provide its targets, configuration, or features in a structured and maintainable way, making integration simpler and less error-prone. Examples ^^^^^^^^ Reading specific cache variables from another project and storing them as local variables: .. code-block:: cmake 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... Reading all non-internal cache entries from another project and storing them as internal cache variables using the obsolete signature: .. code-block:: cmake 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... Excluding specific non-internal cache entries and including internal ones using the obsolete signature: .. code-block:: cmake 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...