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

相关推荐
带鱼吃猫3 小时前
预处理器:宏、运算符与条件编译
c语言·开发语言
小小龙学IT3 小时前
C++ std::vector 底层实现深度解析:内存布局、扩容策略、移动语义与迭代器失效
开发语言·c++·算法
二宝哥3 小时前
CentOS 7.9 离线安装 Nginx 并配置openssl1.1.1
linux·nginx·centos
程序员老陆3 小时前
说一说FFmpeg6在Linux平台的编译
linux·运维·服务器·ffmpeg
码匠许师傅3 小时前
【C++ 面试真题】聊聊 volatile 和 mutable
开发语言·c++·面试
(Charon)3 小时前
【C++】线程安全队列(二):生产者消费者模型与 condition_variable 阻塞等待
c语言·开发语言·c++
liwulin05064 小时前
【PYTHON】使用Selenium + ChromeDriver以及XPATH语法
开发语言·python·selenium
JavaPub-rodert4 小时前
我又把自己的 Go 后台管理系统升级了一遍:文件管理、2GB 上传、私有文件预览、Docker 镜像全安排上了
开发语言·docker·golang·shiyuadmin
动力 continue4 小时前
Python 元类与异常类:类的“制造工厂”与“报错定制师”
开发语言·python·制造
quantdash_cc4 小时前
基于 QuantDash 5 分钟 K 线的网格交易策略参数网格搜索寻优实战
android·开发语言·pandas·量化·quantdash