一、使用编译宏加头文件
// 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