cmake_host_system_information
Запрос информации о системе хоста.
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.
Единица, если процессор имеет FPU (Floating-Point Unit)
-
HAS_MMX -
Новая версия с 3.10.
Единица, если процессор поддерживает инструкции MMX
-
HAS_MMX_PLUS -
Новая версия с 3.10.
Единица, если процессор поддерживает инструкции Ext. MMX
-
HAS_SSE -
Новая версия с 3.10.
Единица, если процессор поддерживает инструкции SSE
-
HAS_SSE2 -
Новая версия с 3.10.
Единица, если процессор поддерживает инструкции SSE2
-
HAS_SSE_FP -
Новая версия с 3.10.
Единица, если процессор поддерживает инструкции SSE FP
-
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.
-
OS_RELEASE -
Новая версия с 3.10.
Подтип ОС, например, в Windows
Professional -
OS_VERSION -
Новая версия с 3.10.
Идентификатор сборки ОС
-
OS_PLATFORM -
Новая версия с 3.10.
-
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 байтам.
© 2000–2022 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.23/command/cmake_host_system_information.html