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

相关推荐
加密狗复制模拟13 小时前
软件加密狗中时间限制机制的破解
开发语言·网络·安全·php·软件工程·个人开发
setmoon21413 小时前
C++中的装饰器模式高级应用
开发语言·c++·算法
m0_5281744513 小时前
C++中的装饰器模式实战
开发语言·c++·算法
阿贵---13 小时前
实时信号处理库
开发语言·c++·算法
※※冰馨※※13 小时前
【QT】Qt项目输出目录配置
c++·windows·qt
爱炸薯条的小朋友13 小时前
C#使用反射,特性,表达式树仿写AutoMapper
开发语言·c#
zhougl99613 小时前
Maven build配置
java·linux·maven
快乐柠檬不快乐13 小时前
C++中的享元模式高级应用
开发语言·c++·算法
oem11013 小时前
C++与Docker集成开发
开发语言·c++·算法
似水明俊德13 小时前
11-C#
开发语言·c#