On this page
cmake_host_system_information
Query host system specific information.
cmake_host_system_information(RESULT <variable> QUERY <key> ...)
Queries system information of the host system on which cmake runs. One or more <key> can be provided to select the information to be queried. The list of queried values is stored in <variable>.
<key> can be one of the following values:
NUMBER_OF_LOGICAL_CORES-
Number of logical cores
NUMBER_OF_PHYSICAL_CORES-
Number of physical cores
HOSTNAME-
Hostname
FQDN-
Fully qualified domain name
TOTAL_VIRTUAL_MEMORY-
Total virtual memory in MiB 1
AVAILABLE_VIRTUAL_MEMORY-
Available virtual memory in MiB 1
TOTAL_PHYSICAL_MEMORY-
Total physical memory in MiB 1
AVAILABLE_PHYSICAL_MEMORY-
Available physical memory in MiB 1
IS_64BIT-
New in version 3.10.
One if processor is 64Bit
HAS_FPU-
New in version 3.10.
One if processor has floating point unit
HAS_MMX-
New in version 3.10.
One if processor supports MMX instructions
HAS_MMX_PLUS-
New in version 3.10.
One if processor supports Ext. MMX instructions
HAS_SSE-
New in version 3.10.
One if processor supports SSE instructions
HAS_SSE2-
New in version 3.10.
One if processor supports SSE2 instructions
HAS_SSE_FP-
New in version 3.10.
One if processor supports SSE FP instructions
HAS_SSE_MMX-
New in version 3.10.
One if processor supports SSE MMX instructions
HAS_AMD_3DNOW-
New in version 3.10.
One if processor supports 3DNow instructions
HAS_AMD_3DNOW_PLUS-
New in version 3.10.
One if processor supports 3DNow+ instructions
HAS_IA64-
New in version 3.10.
One if IA64 processor emulating x86
HAS_SERIAL_NUMBER-
New in version 3.10.
One if processor has serial number
PROCESSOR_SERIAL_NUMBER-
New in version 3.10.
Processor serial number
PROCESSOR_NAME-
New in version 3.10.
Human readable processor name
PROCESSOR_DESCRIPTION-
New in version 3.10.
Human readable full processor description
OS_NAME-
New in version 3.10.
OS_RELEASE-
New in version 3.10.
The OS sub-type e.g. on Windows
Professional OS_VERSION-
New in version 3.10.
The OS build ID
OS_PLATFORM-
New in version 3.10.
DISTRIB_INFO-
New in version 3.22.
Read
/etc/os-releasefile and define the given<variable>into a list of read variables DISTRIB_<name>-
New in version 3.22.
Get the
<name>variable (see man 5 os-release) if it exists in the/etc/os-releasefileExample:
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()Output:
-- 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`
If /etc/os-release file is not found, the command tries to gather OS identification via fallback scripts. The fallback script can use various distribution-specific files to collect OS identification data and map it into man 5 os-release variables.
Fallback Interface Variables
CMAKE_GET_OS_RELEASE_FALLBACK_SCRIPTS-
In addition to the scripts shipped with CMake, a user may append full paths to his script(s) to the this list. The script filename has the following format:
NNN-<name>.cmake, whereNNNis three digits used to apply collected scripts in a specific order.
CMAKE_GET_OS_RELEASE_FALLBACK_RESULT_<varname>-
Variables collected by the user provided fallback script ought to be assigned to CMake variables using this naming convention. Example, the
IDvariable from the manual becomesCMAKE_GET_OS_RELEASE_FALLBACK_RESULT_ID.
CMAKE_GET_OS_RELEASE_FALLBACK_RESULT-
The fallback script ought to store names of all assigned
CMAKE_GET_OS_RELEASE_FALLBACK_RESULT_<varname>variables in this list.
Example:
# 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)
Footnotes
1(1,2,3,4)-
One MiB (mebibyte) is equal to 1024x1024 bytes.
© 2000–2021 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.22/command/cmake_host_system_information.html