QT通过编译宏区分x86 linux arm的方法

一、使用编译宏加头文件

// arch_config.h

#ifndef ARCH_CONFIG_H

#define ARCH_CONFIG_H

#if defined(x86_64) || defined(_M_X64)

#define ARCH_X86_64 1

#define ARCH_NAME "x86_64"

#elif defined(i386) || defined(_M_IX86)

#define ARCH_X86 1

#define ARCH_NAME "x86"

#elif defined(aarch64)

#define ARCH_ARM64 1

#define ARCH_NAME "arm64"

#elif defined(arm)

#define ARCH_ARM 1

#define ARCH_NAME "arm"

#endif

#endif // ARCH_CONFIG_H armde fangfa

二、项目文件*.pro文件处理方法

检测架构并定义宏

contains(QMAKE_HOST.arch, x86_64) {

DEFINES += ARCH_X86_64

message("Building for x86_64")

} else:contains(QMAKE_HOST.arch, arm.*) {

DEFINES += ARCH_ARM

message("Building for ARM")

}else:contains(QMAKE_HOST.arch, arm64) | contains(QMAKE_HOST.arch, aarch64) {

DEFINES += ARCH_ARM64

QMAKE_CXXFLAGS += -mtune=cortex-a72

message("Building for aarch64")

}

三、使用QT内置宏

#include <QtGlobal>

// 方法1: 使用Q_PROCESSOR_宏

#ifdef Q_PROCESSOR_X86

// x86架构

qDebug() << "Running on x86 architecture";

#endif

#ifdef Q_PROCESSOR_X86_32

// 32位x86

#endif

#ifdef Q_PROCESSOR_X86_64

// 64位x86

#endif

#ifdef Q_PROCESSOR_ARM

// ARM架构

qDebug() << "Running on ARM architecture";

#endif

#ifdef Q_PROCESSOR_ARM_64

// ARM64(AArch64)

#endif

相关推荐
ZFB000111 小时前
【麒麟桌面系统】V10-SP1 2503 系统知识——插入U盘(移动硬盘)为只读状态
linux·运维·kylin
unfeeling_11 小时前
Keepalived实验
linux·服务器·网络
Ljwuhe11 小时前
类与对象(中)——运算符重载
开发语言·c++
郝学胜-神的一滴11 小时前
深入理解链表:从基础到实践
开发语言·数据结构·c++·算法·链表·架构
敲敲了个代码11 小时前
vue文件自动生成路由会成为主流
开发语言·前端·javascript·vue.js·前端框架
你住过的屋檐12 小时前
【Java】虚拟线程详解
java·开发语言
霍理迪12 小时前
JS—事件高级
开发语言·javascript·ecmascript
范特西.i12 小时前
QT聊天项目(8)
开发语言·qt
Web极客码12 小时前
解决WordPress后台“外观”菜单消失
linux·服务器·wordpress
烟花落o12 小时前
栈和队列的知识点及代码
开发语言·数据结构·笔记·栈和队列·编程学习