Spec-Zone.ru › CMake 3.25

cmake_host_system_information

Запрос различной информации о системе.

Синтаксис

Query host system specific information
  cmake_host_system_information(RESULT <variable> QUERY <key> ...)

Query Windows registry
  cmake_host_system_information(RESULT <variable> QUERY WINDOWS_REGISTRY <key> ...)

Запрос информации о системе

cmake_host_system_information(RESULT <variable> QUERY <key> ...)

Запрашивает информацию о системе, на которой выполняется cmake. Один или несколько <key> могут быть предоставлены для выбора запрашиваемой информации. Список запрошенных значений хранится в <variable>.

<key> может быть одним из следующих значений:

NUMBER_OF_LOGICAL_CORES

Количество логических ядер

NUMBER_OF_PHYSICAL_CORES

Количество физических ядер

HOSTNAME

Имя хоста

FQDN

Полное доменное имя

TOTAL_VIRTUAL_MEMORY

Общий объем виртуальной памяти в MiB 1

AVAILABLE_VIRTUAL_MEMORY

Доступный объем виртуальной памяти в MiB 1

TOTAL_PHYSICAL_MEMORY

Общий объем физической памяти в MiB 1

AVAILABLE_PHYSICAL_MEMORY

Доступный объем физической памяти в MiB 1

IS_64BIT

Новое в версии 3.10.

Единица, если процессор 64-битный

HAS_FPU

Новое в версии 3.10.

Единица, если процессор имеет блок вычислений с плавающей запятой

HAS_MMX

Новое в версии 3.10.

Единица, если процессор поддерживает инструкции MMX

HAS_MMX_PLUS

Новое в версии 3.10.

Единица, если процессор поддерживает расширенные инструкции MMX

HAS_SSE

Новое в версии 3.10.

Единица, если процессор поддерживает инструкции SSE

HAS_SSE2

Новое в версии 3.10.

Единица, если процессор поддерживает инструкции SSE2

HAS_SSE_FP

Новое в версии 3.10.

Единица, если процессор поддерживает инструкции SSE с плавающей запятой

HAS_SSE_MMX

Новое в версии 3.10.

Единица, если процессор поддерживает инструкции SSE MMX

HAS_AMD_3DNOW

Новое в версии 3.10.

Единица, если процессор поддерживает инструкции 3DNow

HAS_AMD_3DNOW_PLUS

Новое в версии 3.10.

Единица, если процессор поддерживает инструкции 3DNow+

HAS_IA64

Новое в версии 3.10.

Единица, если процессор IA64 эмулирует x86

HAS_SERIAL_NUMBER

Новое в версии 3.10.

Единица, если процессор имеет серийный номер

PROCESSOR_SERIAL_NUMBER

Новое в версии 3.10.

Серийный номер процессора

PROCESSOR_NAME

Новое в версии 3.10.

Читко читаемое имя процессора

PROCESSOR_DESCRIPTION

Новое в версии 3.10.

Читко читаемое полное описание процессора

OS_NAME

Новое в версии 3.10.

См. CMAKE_HOST_SYSTEM_NAME

OS_RELEASE

Новое в версии 3.10.

Подтип ОС, например, в Windows Professional

OS_VERSION

Новое в версии 3.10.

Идентификатор сборки ОС

OS_PLATFORM

Новое в версии 3.10.

См. CMAKE_HOST_SYSTEM_PROCESSOR

DISTRIB_INFO

Новое в версии 3.22.

Чтение файла /etc/os-release и определение заданных <variable> в список прочитанных переменных

DISTRIB_<name>

Новое в версии 3.22.

Получение переменной <name> (см. man 5 os-release), если она существует в файле /etc/os-release.

Пример:

cmake_host_system_information(RESULT PRETTY_NAME QUERY DISTRIB_PRETTY_NAME)
message(STATUS "${PRETTY_NAME}")

cmake_host_system_information(RESULT DISTRO QUERY DISTRIB_INFO)

foreach(VAR IN LISTS DISTRO)
  message(STATUS "${VAR}=`${${VAR}}`")
endforeach()

Вывод:

-- Ubuntu 20.04.2 LTS
-- DISTRO_BUG_REPORT_URL=`https://bugs.launchpad.net/ubuntu/`
-- DISTRO_HOME_URL=`https://www.ubuntu.com/`
-- DISTRO_ID=`ubuntu`
-- DISTRO_ID_LIKE=`debian`
-- DISTRO_NAME=`Ubuntu`
-- DISTRO_PRETTY_NAME=`Ubuntu 20.04.2 LTS`
-- DISTRO_PRIVACY_POLICY_URL=`https://www.ubuntu.com/legal/terms-and-policies/privacy-policy`
-- DISTRO_SUPPORT_URL=`https://help.ubuntu.com/`
-- DISTRO_UBUNTU_CODENAME=`focal`
-- DISTRO_VERSION=`20.04.2 LTS (Focal Fossa)`
-- DISTRO_VERSION_CODENAME=`focal`
-- DISTRO_VERSION_ID=`20.04`

Если файл /etc/os-release не найден, команда пытается собрать идентификацию ОС с помощью скриптов по умолчанию. Скрипт по умолчанию может использовать файлы, специфичные для конкретного дистрибутива, чтобы собрать данные идентификации ОС и сопоставить их с переменными man 5 os-release.

Переменные интерфейса по умолчанию

CMAKE_GET_OS_RELEASE_FALLBACK_SCRIPTS

В дополнение к скриптам, поставляемым с CMake, пользователь может добавить полные пути к своим скриптам в этот список. Имя файла скрипта имеет следующий формат: NNN-<name>.cmake, где NNN - трехзначные цифры, используемые для применения собранных скриптов в определенном порядке.

CMAKE_GET_OS_RELEASE_FALLBACK_RESULT_<varname>

Переменные, собранные предоставленным пользователем скриптом по умолчанию, должны быть назначены переменным CMake с использованием этого соглашения об именовании. Например, переменная ID из руководства становится CMAKE_GET_OS_RELEASE_FALLBACK_RESULT_ID.

CMAKE_GET_OS_RELEASE_FALLBACK_RESULT

Скрипт по умолчанию должен хранить имена всех назначенных CMAKE_GET_OS_RELEASE_FALLBACK_RESULT_<varname> переменных в этом списке.

Пример:

# Try to detect some old distribution
# See also
# - http://linuxmafia.com/faq/Admin/release-files.html
#
if(NOT EXISTS "${CMAKE_SYSROOT}/etc/foobar-release")
  return()
endif()
# Get the first string only
file(
    STRINGS "${CMAKE_SYSROOT}/etc/foobar-release" CMAKE_GET_OS_RELEASE_FALLBACK_CONTENT
    LIMIT_COUNT 1
  )
#
# Example:
#
#   Foobar distribution release 1.2.3 (server)
#
if(CMAKE_GET_OS_RELEASE_FALLBACK_CONTENT MATCHES "Foobar distribution release ([0-9\.]+) .*")
  set(CMAKE_GET_OS_RELEASE_FALLBACK_RESULT_NAME Foobar)
  set(CMAKE_GET_OS_RELEASE_FALLBACK_RESULT_PRETTY_NAME "${CMAKE_GET_OS_RELEASE_FALLBACK_CONTENT}")
  set(CMAKE_GET_OS_RELEASE_FALLBACK_RESULT_ID foobar)
  set(CMAKE_GET_OS_RELEASE_FALLBACK_RESULT_VERSION ${CMAKE_MATCH_1})
  set(CMAKE_GET_OS_RELEASE_FALLBACK_RESULT_VERSION_ID ${CMAKE_MATCH_1})
  list(
      APPEND CMAKE_GET_OS_RELEASE_FALLBACK_RESULT
      CMAKE_GET_OS_RELEASE_FALLBACK_RESULT_NAME
      CMAKE_GET_OS_RELEASE_FALLBACK_RESULT_PRETTY_NAME
      CMAKE_GET_OS_RELEASE_FALLBACK_RESULT_ID
      CMAKE_GET_OS_RELEASE_FALLBACK_RESULT_VERSION
      CMAKE_GET_OS_RELEASE_FALLBACK_RESULT_VERSION_ID
    )
endif()
unset(CMAKE_GET_OS_RELEASE_FALLBACK_CONTENT)

Примечания

1(1,2,3,4)

Один MiB (мебибайт) равен 1024x1024 байтам.

Запрос реестра Windows

Новое в версии 3.24.

cmake_host_system_information(RESULT <variable>
                              QUERY WINDOWS_REGISTRY <key> [VALUE_NAMES|SUBKEYS|VALUE <name>]
                              [VIEW (64|32|64_32|32_64|HOST|TARGET|BOTH)]
                              [SEPARATOR <separator>]
                              [ERROR_VARIABLE <result>])

Выполняет операции запроса в подключаемой подключаемой системе реестра локального компьютера. Возвращает список подключаемых систем или имен значений, которые находятся под указанной подключаемой системой в реестре или данными указанного имени значения. Результат запрошенного объекта хранится в <variable>.

Примечание

Запрос реестра для любых платформ, отличных от Windows, включая CYGWIN, всегда возвращает пустую строку и устанавливает сообщение об ошибке в переменной, указанной с подопцией ERROR_VARIABLE.

<key> указывает полный путь к подключаемой подключаемой системе на локальном компьютере. <key> должен включать допустимый корневой ключ. Допустимые корневые ключи для локального компьютера:

  • HKLM или HKEY_LOCAL_MACHINE
  • HKCU или HKEY_CURRENT_USER
  • HKCR или HKEY_CLASSES_ROOT
  • HKU или HKEY_USERS
  • HKCC или HKEY_CURRENT_CONFIG

И, необязательно, путь к подключаемой подключаемой системе под указанным корневым ключом. Разделитель пути может быть слешем или обратной косой чертой. <key> не чувствительна к регистру. Например:

cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "HKLM")
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "HKLM/SOFTWARE/Kitware")
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "HKCU\\SOFTWARE\\Kitware")
VALUE_NAMES

Запросить список имён значений, определённых в <key>. Если значение по умолчанию определено, оно будет идентифицировано специальным именем (default).

SUBKEYS

Запросить список подключаемых ключей, определённых в <key>.

VALUE <name>

Запросить данные, хранящиеся в значении с именем <name>. Если VALUE не указано или аргумент является специальным именем (default), будет возвращено содержимое значения по умолчанию, если таковое есть.

# query default value for HKLM/SOFTWARE/Kitware key
cmake_host_system_information(RESULT result
                              QUERY WINDOWS_REGISTRY "HKLM/SOFTWARE/Kitware")

# query default value for HKLM/SOFTWARE/Kitware key using special value name
cmake_host_system_information(RESULT result
                              QUERY WINDOWS_REGISTRY "HKLM/SOFTWARE/Kitware"
                              VALUE "(default)")

Поддерживаемые типы:

  • REG_SZ.
  • REG_EXPAND_SZ. Возвращаемые данные расширены.
  • REG_MULTI_SZ. Возвращаемые данные представлены как список CMake. См. также подвариант SEPARATOR.
  • REG_DWORD.
  • REG_QWORD.

Для всех остальных типов возвращается пустая строка.

VIEW

Указать, какие представления реестра должны быть запрошены. Если не указано, используется представление BOTH.

64

Запрос реестра 64-битного формата. На 32bit Windows, всегда возвращает пустую строку.

32

Запрос реестра 32-битного формата.

64_32

Для подварианта VALUE или значения по умолчанию, запрос реестра выполняется с использованием представления 64, и если запрос не удался, запрос выполняется с использованием представления 32. Для подвариантов VALUE_NAMES и SUBKEYS запрос выполняется для обоих представлений (64 и 32) и результаты объединяются (сортируются и удаляются дубликаты).

32_64

Для подварианта VALUE или значения по умолчанию, запрос реестра выполняется с использованием представления 32, и если запрос не удался, запрос выполняется с использованием представления 64. Для подвариантов VALUE_NAMES и SUBKEYS запрос выполняется для обоих представлений (32 и 64) и результаты объединяются (сортируются и удаляются дубликаты).

HOST

Запрос реестра, соответствующего архитектуре хоста: 64 на 64bit Windows и 32 на 32bit Windows.

TARGET

Запрос реестра, соответствующего архитектуре, указанной переменной CMAKE_SIZEOF_VOID_P. Если она не определена, используется представление HOST.

BOTH

Запрос обоих представлений (32 и 64). Порядок зависит от следующих правил: Если переменная CMAKE_SIZEOF_VOID_P определена. Используйте представление в зависимости от содержимого этой переменной:

  • 8: 64_32
  • 4: 32_64

Если переменная CMAKE_SIZEOF_VOID_P не определена, полагайтесь на архитектуру хоста:

  • 64bit: 64_32
  • 32bit: 32
SEPARATOR

Указать разделитель символов для типа REG_MULTI_SZ. Если не указан, используется символ \0.

ERROR_VARIABLE <result>

Возвращает любой ошибку, возникшую во время операции запроса. В случае успеха переменная содержит пустую строку.

© 2000–2022 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.25/command/cmake_host_system_information.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API