QT判断操作系统类型和CPU架构

news2024/9/23 23:28:10

一、判断操作系统类型

1.在.pro文件中判断
macx {
# mac only
}
unix:!macx{
# linux only
}
win32 {
# windows only
}
2.在代码中判断

可以包含QGlobal头文件,判断预定义宏

#include <QtGlobal>
...
#ifdef Q_OS_MAC
// mac
#endif
 
#ifdef Q_OS_LINUX
// linux
#endif
 
#ifdef Q_OS_WIN32
// win
#endif
 
#ifdef __arm__
// arm
#endif

二、判断CPU架构的类型

1.在.pro中判断
//32位
contains(QT_ARCH, i386){		//x86架构 32位
    CONFIG(release, release | debug){
        DESTDIR = $$PWD/bin/x86/release
    } else {
        DESTDIR = $$PWD/bin/x86/debug
    }
}
//64位
contains(QT_ARCH, x86_64){		//x86架构 64位
    CONFIG(release, release | debug){
        DESTDIR = $$PWD/bin/x64/release
    } else {
        DESTDIR = $$PWD/bin/x64/debug
    }
}

contains(QT_ARCH, arm64){
message("arm64") #在这里处理arm64所需
}else{
message("x86")
}

//打印出CPU架构类型
message($$QT_ARCH)

QT_ARCHQt 构建系统中的一个变量,主要用于表示目标平台的架构。不同的架构值取决于你使用的 Qt 版本和构建环境。一般来说,QT_ARCH 的值取决于你的编译目标平台的具体架构。

常见取值:
valuedescripe
x86_64表示 64 位的 x86 架构,也称为 AMD64 或 Intel 64
x86表示 32 位的 x86 架构,也称为 IA-32
arm表示 ARM 架构,通常用于移动设备和嵌入式系统
arm64 或 aarch64表示 64 位的 ARM 架构,常用于现代的 ARM 处理器
mips表示 MIPS 架构,通常用于嵌入式系统
ppc表示 PowerPC 架构,虽然现在不那么常见,但在某些特定环境中可能会遇到
2.在代码中判断

方式1:

 QSysInfo::WordSize=32/64

方式2:

#ifdef _WIN64
    qDebug()<<64;
#else
    qDebug()<<32;
#endif

这种方式只能判断Windows系统的32位和64
且需要注意:
_WIN64只有在64位程序上才被定义;
_WIN326432位程序上都会被定义

所以一般都是这样来使用这个宏定义:

#ifdef _WIN32 //32位和64位 win
    #ifdef _WIN64 //64位 win
        cout << "Windows X64" << endl;
    #else
        cout << "Windows X86" << endl;
    #endif
#else
	cout << "Linux" << endl;
#endif

方式3:

#if defined(__x86_64__) || defined(_M_X64)
    std::cout << "64-bit x86 architecture" << std::endl;
#elif defined(__i386__) || defined(_M_IX86)
    std::cout << "32-bit x86 architecture" << std::endl;
#elif defined(__arm__) || defined(_M_ARM)
    std::cout << "ARM architecture" << std::endl;
#elif defined(__aarch64__)
    std::cout << "64-bit ARM architecture" << std::endl;
#elif defined(__mips__)
    std::cout << "MIPS architecture" << std::endl;
#elif defined(__powerpc__)
    std::cout << "PowerPC architecture" << std::endl;
#else
    std::cout << "Unknown architecture" << std::endl;
#endif

在这里插入图片描述

在这里插入图片描述
参考链接

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

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

相关文章

Datawhale X 魔搭 AI夏令营 Task1 从零入门AI生图原理实践笔记

赛题内容 参赛者需在可图Kolors模型的基础上训练LoRA模型&#xff0c;生成无限风格&#xff0c;如水墨画风格、水彩风格、赛博朋克风格、日漫风格… 基于LoRA模型生成8张图片组成连贯故事&#xff0c;故事内容可自定义&#xff1b;基于8图故事&#xff0c;评估LoRA风格的美感度…

企业大模型落地从0到0.1

现在人工智能里的“大明星”——大模型&#xff0c;正在悄悄改变各行各业。这就像给企业装上了一颗聪明的大脑&#xff0c;能帮助解决各种棘手问题&#xff0c;提升工作效率。今天&#xff0c;我们就来分析下企业如何一步一步让这个“大脑”在自家地盘里真正派上用场&#xff0…

LVS 实现四层负载均衡项目实战--DR模式

一、环境准备 主机名IP地址router eth0&#xff1a;172.25.254.100 eth1&#xff1a;192.168.0.100 clienteth0&#xff1a;172.25.254.200lvseth1&#xff1a;192.168.0.50web1web2 1、client配置 [rootclient ~]# cat /etc/NetworkManager/system-connections/eth0.nmconne…

ArrayList 动态扩容

目录 一、 构造函数1、有参构造函数2、无参构造函数 二、数组扩容三、总结 一、 构造函数 1、有参构造函数 1.1如果指定了容量大小&#xff0c;创建该大小的数组 1.2如果没有指定大小&#xff0c;默认创建空数组 1.3如果是指定小于0的大小&#xff0c;抛出异常 2、无参构造…

前端工程化15-邂逅ES6的语法规范

4、ES6邂逅 3.1、什么是ECMA ECMA&#xff08;European Computer Manufacturers Association&#xff09;中文名为欧洲计算机制造商协会&#xff0c;这个组织的目标是评估、开发和认可电信和计算机标准。1 994年后该组织改名为Ecma国际。 3.2、什么是ECMAScript ECMAScript…

怎样找回U盘里误删的文件?试试这些方法!

在日常工作和生活中&#xff0c;我们经常会使用U盘来存储和传输重要的文件。然而&#xff0c;由于操作失误或其他原因&#xff0c;我们有时会误删U盘中的文件。当遇到这种情况时&#xff0c;很多人可能会感到焦虑和无助。不过&#xff0c;幸运的是&#xff0c;有几种方法可以帮…

三十六、【人工智能】【机器学习】【监督学习】- Bagging算法模型

系列文章目录 第一章 【机器学习】初识机器学习 第二章 【机器学习】【监督学习】- 逻辑回归算法 (Logistic Regression) 第三章 【机器学习】【监督学习】- 支持向量机 (SVM) 第四章【机器学习】【监督学习】- K-近邻算法 (K-NN) 第五章【机器学习】【监督学习】- 决策树…

【清空大脑】

清空大脑&#xff0c;就是把大脑里的想法&#xff0c;都写下来&#xff0c;放到一个地方。这样&#xff0c;可以降低大脑的压力。 我记得我第一次清空大脑的时候&#xff0c;使用的事微软OutLook的便签功能&#xff0c;一共记录了200多项。 看着这200多项&#xff0c;我感觉自…

ubuntu设置开机自动执行脚本、ubuntu设置开机自动启动java服务

使用 crontab 编辑器添加一个任务&#xff0c;该任务将在系统启动时执行你的脚本。在终端中运行以下命令&#xff1a; crontab -e添加开机自启任务&#xff1a; 在打开的编辑器中&#xff0c;添加以下行&#xff1a; reboot /home/demo.jar &这行代码告诉 cron 在每次系统…

微调神器LLaMA-Factory官方保姆级教程来了,从环境搭建到模型训练评估全覆盖

1. 项目背景 开源大模型如LLaMA&#xff0c;Qwen&#xff0c;Baichuan等主要都是使用通用数据进行训练而来&#xff0c;其对于不同下游的使用场景和垂直领域的效果有待进一步提升&#xff0c;衍生出了微调训练相关的需求&#xff0c;包含预训练&#xff08;pt&#xff09;&…

探索AI角色扮演的新前端工具:SillyTavern

在人工智能&#xff08;AI&#xff09;领域&#xff0c;角色扮演&#xff08;Roleplay&#xff09;无疑是一个富有趣味且充满潜力的应用场景。无论你是AI爱好者还是开发者&#xff0c;找到一个合适的前端工具来访问并与语言模型进行互动是至关重要的。今天&#xff0c;我们将介…

[2024_08_12日志]ONNX Runtime的使用

问题&#xff1a;Segmentation 错误。在 C API 上使用自定义 onnx 模型运行。模型在 Python 上按预期工作&#xff0c;但在 C API 上运行相同的模型时&#xff0c;会收到一个分段错误 python的模型代码如下&#xff1a; class Facenet(nn.Module):def __init__(self, backbone…

lvs详解及实例配置

目录 1.什么是负载均衡 1.1为什么用负载均衡 1.2.负载均衡类型 1.2.1.四层负载均衡 1.2.2.七层负载均衡 1.3 四层和七层的区别 2.LVS介绍 2.1LVS 的优势与不足 2.2LVS 核心组件和专业术语 3.ipvsadm命令 4.LVS集群中的增删改 4.1.管理集群服务中的增删改 4.2.管理集…

C:每日一题:单身狗

​​​​ 一、题目&#xff1a; 在一个整型数组中&#xff0c;只有一个数字出现一次&#xff0c;其他数组都是成对出现的&#xff0c;请找出那个只出现一次的数字。 整型数组 int arr[ ] {1,1,2,2,3,4,4} 二、思路分析&#xff1a; 1.&#xff0c;明确目标&#xff0c;选择…

【linux】nvidia AGX orin 多方法开机自启 .sh 文件

背景&#xff1a; 安装搜狗输入法时候&#xff0c;发现etc/xdg/autostart路径下写desktop文件的方式&#xff0c;于是把所有方案整理一下 为了让 .sh 文件在用户登录时自动执行&#xff0c;可以采用如下多种方法。 1. 使用 .desktop 文件 创建一个 .desktop 文件&#xff0c;将…

链表的奇偶节点重新排列及空指针问题分析【链表、空指针】

在处理链表问题时&#xff0c;重组链表节点是一种常见需求。本文将详细探讨如何在链表中将奇数索引节点放在偶数索引节点之前&#xff0c;并深入分析实现过程中的空指针问题及其解决方案。 1. 问题描述 给定一个单链表&#xff0c;要求将链表中的节点按照奇数索引节点在前、偶…

掌握 PyTorch 张量乘法:八个关键函数与应用场景对比解析

PyTorch提供了几种张量乘法的方法&#xff0c;每种方法都是不同的&#xff0c;并且有不同的应用。我们来详细介绍每个方法&#xff0c;并且详细解释这些函数有什么区别&#xff1a; 1、torch.matmul torch.matmul 是 PyTorch 中用于矩阵乘法的函数。它能够处理各种不同维度的张…

HTML零基础自学笔记(下)篇一 -8.8

HTML零基础自学笔记&#xff08;下&#xff09;---之表格标签详解 参考&#xff1a;pink老师篇一、表格标签是什么&#xff1f;基础内容&#xff08;主要作用、基本语法、标签释义、属性&#xff09;主要作用基本语法标签释义表格结构标签属性 合并单元格代码练习代码运行效果&…

IDEA 报错,无效的源发行版 无效的目标发行版:22

报错内容&#xff1a; 在编译项目的时候出现报错&#xff1a; 解决办法&#xff1a; 无效的源发行版 原因&#xff1a;编译的JDK版本与发布版本不一致 File -> Project Structure ->Project Settings 让其中的三处版本保持一致&#xff0c;具体操作如下&#xff1a; …

Vue3+Element-plus+setup使用vuemap/vue-amap实现高德地图API相关操作

首先要下载依赖并且引入 npm安装 // 安装核心库 npm install vuemap/vue-amap --save// 安装loca库 npm install vuemap/vue-amap-loca --save// 安装扩展库 npm install vuemap/vue-amap-extra --save cdn <script src"https://cdn.jsdelivr.net/npm/vuemap/vue-a…