如果代码里面有些判断需要不同的参数做判断;

办法:在pro文件里面做定义

方法1:直接定义一个宏;用的时候可以直接判断,这样做不好的地方是编译前需要重新切换一下宏

1)定义宏

DEFINES += __ARM _ARM _LINUX
DEFINES += _WIN32 _WINDOWS
DEFINES += _LINUX_86 _LINUX

2)用的时候使用条件判断contians 是否包括:

contains(DEFINES, _ARM){
TARGET = GwEmsQt
}else{
contains(DEFINES,_WINDOWS){
}else{
TARGET = GwEmsQtWin
}
TARGET = GwEmsQtLinux86
}

方法2:这个宏的定义直接根据宏来判断,

由于内置函数isEqual不会如何判断字符串是否含有arm,只能写全路径,且只能先定义一个临时变量ISARM来判断

后续步骤如1一样;

ISARM=$$[QT_HOST_PREFIX]
isEqual(ISARM, "/home/wudqubt/tools/qt-arm-2009"){
message("arm")
DEFINES += __ARM _ARM _LINUX
}else{
if(contains(CONFIG, linux)){
message("linux no arm")
DEFINES += _LINUX_86 _LINUX
}else{
message("no linux no arm")
DEFINES += _WIN32 _WINDOWS
}
}

其他一些有用的宏和函数:

message(QMAKE_HOST.os: $$QMAKE_HOST.os)
message(QMAKE_HOST.arch: $$QMAKE_HOST.arch)
message(QMAKE_HOST.cpu: $$QMAKE_HOST.cpu)
message(QMAKE_HOST.version: $$QMAKE_HOST.version)
message(QMAKE_HOST.version_string: $$QMAKE_HOST.version_string)
message(QMAKESPEC: $${QMAKESPEC})
message(QT_HOST_PREFIX: $$[QT_HOST_PREFIX])
message(CONFIG: $$CONFIG)
message(defines: $$DEFINES)
message(QMAKE_VERSION: $$[QMAKE_VERSION])

Qt 条件编译 arm windows linux 判断 跨平台的更多相关文章

  1. windows linux—unix 跨平台通信集成控制系统----文件搜索

    跨平台的网络通信,跟设备的集成控制,牵扯到在各种平台下的文件搜索问题,windows下面的已经有了. 地址如下: http://blog.csdn.net/wangyaninglm/article/d ...

  2. windows linux—unix 跨平台通信集成控制系统----系统硬件信息获取

    控制集成系统需要了解系统的各项硬件信息,之前我们设计的时候,习惯使用c函数来搞,后来可能发现程序的移植性收到了一些影响,比如unix内核的一些c函数在linux下面是没有的: 比如 苹果达尔文内核的如 ...

  3. windows linux—unix 跨平台通信集成控制系统

    首先,我们可以用到这个开源的开发包: mdk(Micro-Development-Kit)微量级软件开发包,提供几个常用类,主要实现了一个高性能的并发服务器引擎 使用c++开发,是一个跨平台的开发包, ...

  4. 【Qt开发】【Linux开发】Qt程序在嵌入式设备(arm) 上运行,鼠标擦除界面的解决方案

    笔者最近想在arm开发板上,开发一个应用程序,经过网上查询发现qt作为跨平台开发软件很不错,于是便选择了qt开发,笔者的qt版本是4.8.6的.由于arm的主频太低,在arm上进行开发编译,效率会大大 ...

  5. 使用Active Database Duplication创建跨平台Data Guard设置 (Windows/Linux) (Doc ID 881421.1)

    Using Active Database Duplication to Create Cross Platform Data Guard Setup (Windows/Linux) (Doc ID ...

  6. IDA Pro Disassembler 6.8.15.413 (Windows, Linux, Mac)

    IDA: What's new in 6.8 Highlights This is mainly a maintenance release, so our focus was on fixing b ...

  7. 【Qt开发】【ARM-Linux开发】 QT在ARM上显示字体的问题

    在PC机上利用QT开发的应用程序在设置字体时,在PC上运行,可根据自己的设置,字体随之变大或变小.而移植到ARM上运行时发现,显示字体与所设置的字体不用,字体普遍偏小.经过上网搜索发现,是环境变量字库 ...

  8. Matlab命令——目录操作(windows&Linux)

    Matlab命令——目录操作(windows&Linux) 1. filesep用于返回当前平台的目录分隔符,Windows是反斜杠(\),Linux是斜杠(/).有时此命令结合ispc命令使 ...

  9. 调试exynos4412—ARM嵌入式Linux—LEDS/GPIO驱动之二

    /** ****************************************************************************** * @author    暴走的小 ...

随机推荐

  1. MySQL快速回顾:高级查询操作

    8.1 排序数据 检索出的数据并不是以纯粹的随机顺序显示的.如果不排序,数据一般将以它在底层表中出现的顺序显示.这可以是数据最初添加到表中的顺序.但是,如果数据后来进行过更新或删除,则此顺序将会受到M ...

  2. python列表(数组)

    列表(list)  就是 数组 - 列表是Python中的一个对象 - 对象(object)就是内存中专门用来存储数据的一块区域 - 之前我们学习的对象,像数值,它只能保存一个单一的数据 - 列表中可 ...

  3. 重拾c++第三天(5):循环和关系表达式

    1.改变步长 ;i<;i=i+) 2.*与++优先级相同,从右向左 3.strcmp函数比较两个字符串,=0两个相同,><0 ----> str1><str2 4. ...

  4. 两个关于 Java 面试的 Github 项目

    哈喽,大家好.相信大家都知道金九银十,在人才市场上是指每年的 9 月和 10 月是企业的招聘高峰期.这个时候企业往往有大量招聘需求,求职者在这个时候就找工作无疑是最适合的.需求大,谈工资什么的就更容易 ...

  5. NPOI导出Excel生成多个sheet

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

  6. 关于爬虫的日常复习(14)—— 爬虫beautifulsoup的初级高级的基本用法

  7. python 验证客户端的合法性

    目的:对连接服务器的客户端进行判断 # Server import socket import hmac import os secret_key = bytes('tom', encoding='u ...

  8. elasticjob学习一:simplejob初识和springboot整合

    Elastic-Job是一个分布式调度解决方案,由两个相互独立的子项目Elastic-Job-Lite和Elastic-Job-Cloud组成. Elastic-Job-Lite定位为轻量级无中心化解 ...

  9. ps入门

    目标:把运动截图的日期改掉.一次运动,天天装逼! 1 左上角   文件 -> 打开  选中要P的图片 2 CRTL 和 +号  放大 3 摁住空格键就可以用鼠标拖动图片(把要P的部分放到中间) ...

  10. isinstance 和type

    推荐使用 isinstance 判断对象类型. isinstance 的用法: 语法: isinstance(object, classinfo) 其中,object 是变量,classinfo 是类 ...