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

相关推荐
geovindu5 小时前
go: Visitor Pattern
开发语言·设计模式·golang·访问者模式
草莓熊Lotso5 小时前
Vibe Coding 时代:LangChain 与 LangGraph 全链路解析
linux·运维·服务器·数据库·人工智能·mysql·langchain
宣宣猪的小花园.5 小时前
C语言重难点全解析:内存管理到位运算
c语言·开发语言·单片机
方安乐9 小时前
python之向量、向量和、向量点积
开发语言·python·numpy
小小小米粒10 小时前
Collection单列集合、Map(Key - Value)双列集合,多继承实现。
java·开发语言·windows
蜡台11 小时前
Python包管理工具pip完全指南-----2
linux·windows·python
czhc114007566311 小时前
C# 428 线程、异步
开发语言·c#
Ujimatsu11 小时前
虚拟机安装Debian 13.x及其常用软件(2026.4)
linux·运维·ubuntu
千百元11 小时前
zookeeper启不来了
linux·zookeeper·debian
:12111 小时前
java基础
java·开发语言