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

相关推荐
M78佐菲2 小时前
Linux学习笔记:TCP协议
linux·笔记·学习·tcp/ip·算法
恋恋西风2 小时前
C++ 理解 std::thread 在单核和多核上的行为差异
开发语言·c++
Brilliantwxx2 小时前
【Linux】 进程(9)程序与进程地址空间(基础+进阶+面试题)
linux·运维·服务器·开发语言·c++
不怕犯错,就怕不做3 小时前
git prune 自动删除本地记录中那些远程已经不存在的分支引用
linux·服务器·git
BizzZ_3 小时前
C++(22)——类型转换和IO流
开发语言·c++
小范同学_3 小时前
JDK1.7 与 JDK1.8 HashMap 底层原理对比 + 数组并发扩容死循环详解
java·开发语言
geovindu4 小时前
CSharp: 万年历
开发语言·后端·c#·.net
我找到地球的支点啦4 小时前
Matlab系列(009) 一CRC循环冗余校验详解
开发语言·数据结构·算法·matlab·信息与通信
予昊4 小时前
从零实现“在线五子棋对战“:WebSocket 实时通信 + 段位匹配
java·开发语言·网络·websocket
一池秋_4 小时前
arm低配linux设备,桌面应用冷启动提速方法
linux·运维·arm开发