一、命令格式
cmake_host_system_information(RESULT <variable> QUERY <key> ...)
查询CMake
运行环境的系统信息,<key>
指定待查询的信息,可以有多个,查询结果存放在<variable>
中。
<key>
可以是主机名称、内存信息、CPU信息等等,<key>
的所有取值可以参考本文的第三章节更多细节
。
二、示例
# CMakeLists.txt
cmake_minimum_required(VERSION 3.20)
project(host_info)
cmake_host_system_information(RESULT var QUERY HOSTNAME)
message("hostname: ${var}")
cmake_host_system_information(RESULT var QUERY NUMBER_OF_LOGICAL_CORES NUMBER_OF_PHYSICAL_CORES)
message("cores: ${var}")
cmake_host_system_information(RESULT var QUERY TOTAL_VIRTUAL_MEMORY TOTAL_PHYSICAL_MEMORY)
message("memory(MB): ${var}")
cmake_host_system_information(RESULT var QUERY PROCESSOR_NAME)
message("processor name: ${var}")
cmake_host_system_information(RESULT var QUERY OS_NAME OS_RELEASE OS_VERSION OS_PLATFORM)
message("os information: ${var}")
我的是macOS
,执行结果如下:
hostname: myBookAir
cores: 4;2
memory(MB): 5120;4096
processor name: Intel(R) Core(TM) i5-5250U CPU @ 1.60GHz
os information: Mac OS X;10.13.6;17G14019;x86_64
hostname: myBookAir
cores: 4;2
memory(MB): 5120;4096
processor name: Intel(R) Core(TM) i5-5250U CPU @ 1.60GHz
os information: Mac OS X;10.13.6;17G14019;x86_64
三、更多细节
<key>
的取值如下:
-
NUMBER_OF_LOGICAL_CORES
:逻辑核心数量。 -
NUMBER_OF_PHYSICAL_CORES
:物理核心数量。 -
HOSTNAME
:主机名称。 -
FQDN
:主机域名全称。 -
TOTAL_VIRTUAL_MEMORY
:总虚拟内存,单位是M
。 -
AVAILABLE_VIRTUAL_MEMORY
:可用虚拟内存,单位是M
。 -
TOTAL_PHYSICAL_MEMORY
:总物理内存,单位是M
。 -
AVAILABLE_PHYSICAL_MEMORY
:可用物理内存,单位是M
。 -
IS_64BIT
:如果处理器是64
位,查询结果为1
。 -
HAS_FPU
:如果处理器拥有浮点处理单元,查询结果为1
。 -
HAS_MMX
:如果处理器支持MMX
指令集,查询结果为1
。 -
HAS_MMX_PLUS
:如果处理器支持Ext. MMX
指令集,查询结果为1
。 -
HAS_SSE
:如果处理器支持SSE
指令集,查询结果为1
。 -
HAS_SSE2
:如果处理器支持SSE2
指令集,查询结果为1
。 -
HAS_SSE_FP
:如果处理器支持SSE FP
指令集,查询结果为1
。 -
HAS_SSE_MMX
:如果处理器支持SSE MMX
指令集,查询结果为1
。 -
HAS_AMD_3DNOW
:如果处理器支持3DNow
指令集,查询结果为1
。 -
HAS_AMD_3DNOW_PLUS
:如果处理器支持3DNow+
指令集,查询结果为1
。 -
HAS_IA64
:如果IA64
处理器可以模拟X86
,查询结果为1
。 -
HAS_SERIAL_NUMBER
:如果处理器有序列号,查询结果为1
。 -
PROCESSOR_SERIAL_NUMBER
:处理器序列号。 -
PROCESSOR_NAME
:可读的处理器全称。 -
OS_NAME
:操作系统名称,也就是uname -s
的输出,三大操作系统对应的名称是Linux
、Windows
和Darwin
(masOS
),也可以通过CMAKE_HOST_SYSTEM_NAME
变量获取。 -
OS_RELEASE
:操作系统子类型,例如Windows Professional
。 -
OS_VERSION
:操作系统构建ID
。 -
OS_PLATFORM
:处理器架构,Windows
下可以通过PROCESSOR_ARCHITECTURE
变量获取,Unix/Linux/macOS
等平台可以通过uname -m
或uname -p
获取。也可以通过CMAKE_HOST_SYSTEM_PROCESSOR
变量获取。