CMake中cmake_host_system_information的使用

news2024/9/24 19:24:13

      CMake中的cmake_host_system_information命令用于查询各种主机系统信息,其格式如下:

cmake_host_system_information(RESULT <variable> QUERY <key> ...) # 1
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>]) # 2

      1. 查询运行cmake的主机系统的系统信息。可以提供一个或多个<key>来选择要查询的信息。查询值列表存储在<variable>中。
      <key>可以是以下值:
      (1).NUMBER_OF_LOGICAL_CORES: 逻辑内核数
      (2).NUMBER_OF_PHYSICAL_CORES: 物理内核数
      (3).HOSTNAME: 主机名
      (4).FQDN: 完全限定域名
      (5).TOTAL_VIRTUAL_MEMORY: 总虚拟内存数(MB)
      (6).AVAILABLE_VIRTUAL_MEMORY: 可用虚拟内存数(MB)
      (7).TOTAL_PHYSICAL_MEMORY: 总物理内存数(MB)
      (8).AVAILABLE_PHYSICAL_MEMORY: 可用物理内存数(MB)
      (9).IS_64BIT: 如果处理器为64位,则为1
      (10).HAS_FPU: 如果处理器具有浮点单元(floating point unit),则为1
      (11).HAS_MMX: 如果处理器支持MMX指令,则为1
      (12).HAS_MMX_PLUS: 如果处理器支持扩展MMX指令,则为1
      (13).HAS_SSE: 如果处理器支持SSE指令,则为1
      (14).HAS_SSE2: 如果处理器支持SSE2指令,则为1
      (15).HAS_SSE_FP: 如果处理器支持SSE FP指令,则为1
      (16).HAS_SSE_MMX: 如果处理器支持SSE MMX指令,则为1
      (17).HAS_AMD_3DNOW: 如果处理器支持AMD 3DNow指令,则为1
      (18).HAS_AMD_3DNOW_PLUS: 如果处理器支持AMD 3DNow+指令,则为1
      (19).HAS_IA64: 如IA64处理器模拟x86,则为1
      (20).HAS_SERIAL_NUMBER: 如果处理器有序列号,则为1
      (21).PROCESSOR_SERIAL_NUMBER: 处理器序列号
      (22).PROCESSOR_NAME: 处理器名称
      (23).PROCESSOR_DESCRIPTION: 完整处理器描述
      (24).OS_NAME: CMake运行的操作系统名称,可参考CMAKE_HOST_SYSTEM_NAME
      (25).OS_RELEASE: 操作系统子类型(OS sub-type),如Windows Professional
      (26).OS_VERSION: 操作系统内建版本ID
      (27).OS_PLATFORM: 操作系统平台
      (28).DISTRIB_INFO: 读取/etc/os-release文件并将读取的变量列表赋值给<variable>
      (29).DISTRIB_<name>: 如果<name>变量存在于/etc/os-release文件中则获取
      如果未找到/etc/os-release文件,该命令尝试通过回退脚本收集操作系统标识(the command tries to gather OS identification via fallback scripts).回退脚本可以使用各种特定于发行版的文件来收集操作系统标识数据,并将其映射到os-release变量中(the fallback script can use various distribution-specific files to collect OS identification data and map it into os-release variables)。

cmake_host_system_information(RESULT info QUERY NUMBER_OF_LOGICAL_CORES NUMBER_OF_PHYSICAL_CORES HOSTNAME)
message(STATUS "${info}")

cmake_host_system_information(RESULT info QUERY TOTAL_VIRTUAL_MEMORY AVAILABLE_VIRTUAL_MEMORY TOTAL_PHYSICAL_MEMORY AVAILABLE_PHYSICAL_MEMORY)
message(STATUS "${info}")

cmake_host_system_information(RESULT info QUERY IS_64BIT HAS_FPU HAS_SSE2 HAS_AMD_3DNOW)
message(STATUS "${info}")

cmake_host_system_information(RESULT info QUERY HAS_SERIAL_NUMBER PROCESSOR_SERIAL_NUMBER PROCESSOR_NAME PROCESSOR_DESCRIPTION)
message(STATUS "${info}")

cmake_host_system_information(RESULT info QUERY OS_NAME OS_RELEASE OS_VERSION OS_PLATFORM)
message(STATUS "${info}")

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()

      2. 查询windows注册表:对本地计算机注册表子项(registry subkey)执行查询操作.
      注意:查询Windows以外的任何其它平台的注册表将始终返回一个空字符串,并在使用子选项ERROR_VARIABLE指定的变量中设置错误消息。

      执行测试代码需要多个文件

      build.sh内容如下

#! /bin/bash

# supported input parameters(cmake commands)
params=(function macro cmake_parse_arguments \
		find_library find_path find_file find_program find_package \
		cmake_policy cmake_minimum_required project include \
		string list set foreach message option if while return \
		math file configure_file \
		include_directories add_executable add_library link_libraries target_link_libraries install \
		target_sources add_custom_command add_custom_target \
		add_subdirectory aux_source_directory \
		set_property set_target_properties define_property \
		add_definitions target_compile_definitions target_compile_features \
		add_compile_options target_include_directories link_directories \
		add_link_options target_precompile_headers cmake_host_system_information)

usage()
{
	echo "Error: $0 needs to have an input parameter"

	echo "supported input parameters:"
	for param in ${params[@]}; do
		echo "  $0 ${param}"
	done

	exit -1
}

if [ $# != 1 ]; then
	usage
fi

flag=0
for param in ${params[@]}; do
	if [ $1 == ${param} ]; then
		flag=1
		break
	fi
done

if [ ${flag} == 0 ]; then
	echo "Error: parameter \"$1\" is not supported"
	usage
	exit -1
fi

if [[ ! -d "build" ]]; then
	mkdir build
	cd build
else
	cd build
fi

echo "==== test $1 ===="

# test_set.cmake: cmake -DTEST_CMAKE_FEATURE=$1 --log-level=verbose ..
# test_option.cmake: cmake -DTEST_CMAKE_FEATURE=$1 -DBUILD_PYTORCH=ON ..
cmake -DTEST_CMAKE_FEATURE=$1 ..
# It can be executed directly on the terminal, no need to execute build.sh, for example: cmake -P test_set.cmake
make
# make install # only used in cmake files with install command

      主CMakeLists.txt内容如下:

cmake_minimum_required(VERSION 3.22)
project(cmake_feature_usage)

message("#### current cmake version: ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION}")
include(test_${TEST_CMAKE_FEATURE}.cmake)
message("==== test finish ====")

      test_cmake_host_system_information.cmake内容为上面的所有测试代码段

      可能的执行结果如下图所示: 

      GitHub:https://github.com/fengbingchun/Linux_Code_Test

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/356582.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【爬虫理论实战】详解常见头部反爬技巧与验证方式 | 有 Python 代码实现

以下是常见头部反爬技巧与验证方式的大纲&#xff1a; User-Agent 字段的伪装方式&#xff0c;Referer 字段的伪装方式&#xff0c;Cookie 字段的伪装方式。 文章目录1. ⛳️ 头部反爬技巧1.1. User-Agent 字段&User-Agent 的作用1.2. 常见 User-Agent 的特征1.3. User-Age…

Spring IoC容器之常见常用注解以及注解编程模型简介

一、全文概览 本篇文章主要学习记录Spring中的核心注解&#xff0c;罗列常见常用的注解以及Spring中的注解编程模型介绍 二、核心注解 1、Spring模式注解 常用注解场景描述Spring起始支持版本Component通用组件模式注解&#xff0c;是所有组件类型注解的元注解Spring 2.5Repo…

【分库分表】企业级分库分表实战方案与详解(MySQL专栏启动)

&#x1f4eb;作者简介&#xff1a;小明java问道之路&#xff0c;2022年度博客之星全国TOP3&#xff0c;专注于后端、中间件、计算机底层、架构设计演进与稳定性建设优化&#xff0c;文章内容兼具广度、深度、大厂技术方案&#xff0c;对待技术喜欢推理加验证&#xff0c;就职于…

计算机操作系统概述

文章目录1.0 操作系统概述1.1 操作系统的目标1.2 操作系统的功能1.3 操作系统结构1.4 操作系统接口1.5 操作系统的发展1.6 操作系统的特征2.0 进程管理2.1 进程调度2.2 进程调度算法2.3 进程间通信2.4 进程间的同步2.5 软件实现互斥的方法2.6 硬件实现互斥的方法2.7 信号2.8 管…

python基于django 医院急诊挂号系统

目录 1 绪论 1 1.1课题背景 1 1.2课题研究现状 1 1.3初步设计方法与实施方案 2 1.4本文研究内容 2 2 系统开发环境 4 2.1 JAVA简介 4 2.2MyEclipse环境配置 4 2.3 B/S结构简介 4 2.4MySQL数据库 5 2.5 SPRINGBOOT框架 5 3 系统分析 6 3.1系统可行性分析 6 3.1.1经济可行性 6 3.…

Mysql(二)索引、查询

索引一、索引索引分类MySQL索引结构**B和B-树的区别**语法创建修改删除查看二、MySQL查询一、索引 概念&#xff1a; 索引时帮助MySQL高效获取数据的数据结构 本质&#xff1a; 数据结构 实现&#xff1a; 在存储引擎层面实现的&#xff0c;而不是server层面。不是所有的存储引…

CNI 网络分析(九)Calico IPIP

文章目录环境流量分析Pod 间Node 到 PodPod 到 serviceNode 到 serviceNetworkPolicy理清和观测网络流量环境 可以看到&#xff0c;在宿主机上有到每个 pod IP 的路由指向 veth 设备 到对端节点网段的路由 指向 tunl0 下一跳 ens10 的 ip 有到本节点网段 第一个 ip 即 tunl0 的…

Prometheus监控案例之blackbox-exporter

blackbox-exporter简介 blackbox-exporter项目地址&#xff1a;https://github.com/prometheus/blackbox_exporter blackbox-exporter是Prometheus官方提供的一个黑盒监控解决方案&#xff0c;可以通过HTTP、HTTPS、DNS、ICMP、TCP和gRPC方式对目标实例进行检测。可用于以下使…

基于计算机视觉的建筑物火灾早期探测模型的开发

1.文章信息本次介绍的文章是2023年韩国延世大学作为一作发表的一篇关于基于计算机视觉的火灾检测文章&#xff0c;题目为《Development of early fire detection model for buildings using computer vision-based CCTV》。2.摘要建筑物的火灾直接影响到居住者的生命。因此&…

FL Studio最新发布21版本更新全部内容详情介绍

FL Studio最新发布21版本&#xff0c;也是一次重要的版本更新&#xff0c;让使用FL Studio软件的音乐制作人们进入到了全新的AI编曲时代&#xff0c;并改进了80多操作页面包括用户页面、项目文件夹、常规设置、导出导入等等&#xff0c;使用起来更加的简洁。本期给大家带来的是…

相关性-回忆录(持续更新)

1.TODO方向 &#xff08;1&#xff09;数据增强&#xff1a;finetuning阶段需要大量人工标注样本&#xff0c;消耗时间和成本。用户点击数据作为弱监督学习&#xff0c;可以尝试图网络构建节点和边&#xff08;query聚合&#xff09;&#xff1b; 使用展现未点击生成对抗网络进…

加油站会员管理小程序实战开发教程14 会员充值

我们上篇介绍了会员开卡的业务,开卡是为了创建会员卡的信息。有了会员卡信息后我们就可以给会员进行充值。当然了充值这个业务是由会员自主发起的。 按照我们的产品原型,我们在我的页面以轮播图的形式循环展示当前会员的所有卡信息。这个会员卡信息需要先用变量从数据源读取…

【算法】双指针

作者&#xff1a;指针不指南吗 专栏&#xff1a;算法篇 &#x1f43e;或许会很慢&#xff0c;但是不可以停下来&#x1f43e; 文章目录1.双指针分类2.双指针思想3.双指针应用1.双指针分类 常见问题分类 (1) 对于一个序列&#xff0c;用两个指针维护一段区间, 比如快速排序。 …

SQL代码编码原则和规范

目录1、先了解MySQL的执行过程2、数据库常见规范3、所有表必须使用Innodb存储引擎4、每个Innodb表必须有个主键5、数据库和表的字符集统一使用UTF86、查询SQL尽量不要使用select *&#xff0c;而是具体字段7、避免在where子句中使用 or 来连接条件8、尽量使用数值替代字符串类型…

POI处理Excel (xlsx格式) 设置单元格格式为数值 且千分位分隔 保留两位小数

背景 某公司导出的一个Excel 其中有三列数据 是数字 但是导出后 实际上格式为 数值形式的字符串 客户要求这三列的格式改为 数值格式 且千分位分隔 保留两位小数 分析原因 先看导出用到了什么工具 查看源码发现 导出 使用了 EasyExcel 立马想到 一般情况下导出实体的字段类…

layui框架学习(7:选项卡样式)

选项卡&#xff08;Tab&#xff09;在C/S程序和B/S程序中应用比较广泛&#xff0c;CSDN中也能看到选项卡的身影&#xff08;如下图所示&#xff09;。Layui内置多种Tab风格&#xff0c;支持删除选项卡、并提供响应式支持。Layui官方教程中主要介绍了选项卡相关的样式设置&#…

Windows Server 2016远程桌面配置全过程

镜像下载 系统镜像网址 本次下载的是 Windows Server 2016 (Updated Feb 2018) (x64) - DVD (Chinese-Simplified) 远程桌面配置 Step 1 在开始菜单搜索服务&#xff0c;打开服务器管理器&#xff0c;点击右上角的管理按钮 Step 2 添加角色控制&#xff0c;点击下一步 S…

如何描述建筑在新型电力系统中的基本特征?——现状与展望(刘晓华)

刘晓华等人 | 如何描述建筑在新型电力系统中的基本特征&#xff1f;——现状与展望 2022如何描述建筑在新型电力系统中的基本特征&#xff1f;——现状与展望 摘要 建筑领域是实现碳中和目标的重要部门&#xff0c;未来零碳能源系统中建筑有望成为集能源生产、消费、调蓄“三…

【Redis】一、CentOS64 安装 Redis

1.下载redis https://download.redis.io/releases/2.将 redis 安装包拷贝到 /opt/ 目录 最好自己创建一个文件夹 3.解压 tar -zvxf redis-6.2.1.tar.gz4. 安装gcc yum install gcc5. 进入目录 cd /opt/redis/redis-6.2.1/6. 编译 make7.执行 make install 进行安装 8. …

Redis面试题:1~2亿条数据需要缓存,请问如何设计这个存储案例

目录 前言 一、哈希取余分区 优点 缺点 二、一致性哈希算法分区 背景 步骤 ① 算法构建一致性哈希环 ② 服务器IP节点映射 ③ key落到服务器的落键规则 优点 ① 容错性 ② 扩展性 缺点 三、哈希槽分区 前言 单机单台100%不可能&#xff0c;肯定是分布式存储&am…