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-releasefile- Example: - 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, where- NNNis 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 becomes- CMAKE_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
