目录

一、问题来源

二、Qt pro中使用DEFINES来实现条件编译

1、pro中使用DEFINES来实现条件编译

2、 在生成的makefile中,可以看到编译宏

3、在源码中使用编译宏

3、解决方案

1、pro中使用DEFINES来实现

2、方法2


一、问题来源

从windows移植过来的Qt程序编译时会出现保护opengl头文件的错误。通过追踪错误来源,发现在QtGui模块的头文件中有包含GL/gl.h的部分。如何解决这一问题?

二、Qt pro中使用DEFINES来实现条件编译

1、pro中使用DEFINES来实现条件编译

在Qt的pro文件中使用DEFINES 来实现类似gcc -D的条件编译功能。
如,在pro中:

#定义条件编译宏LAOER
DEFINES += LAOER
#依赖编译宏LAOER的编译选项:
contains(DEFINES, LAOER){message(hello Laoer)
}
#与编译宏LAOER冲突的编译选项:
!contains(DEFINES, LAOER){message(hello Laoda)
}

2、 在生成的makefile中,可以看到编译宏

 DEFINES  = ... -DLAOER ...CXXFLAGS = ... $(DEFINES) ......$(CXX) -c $(CXXFLAGS) ...

3、在源码中使用编译宏

可以使用ifndef、ifdef条件编译

#ifndef LAOER
...
#endif#ifdef LAOER
...
#endif

3、解决方案

1、pro中使用DEFINES来实现

DEFINES += QT_NO_OPENGL

2、方法2

此时在include <QtGui> <QtWidgets>等命令前加上#define QT_NO_OPENGL,则可解决问题。

Qt跨平台Linux5-使用DEFINES来实现条件编译相关推荐

  1. 【Qt】pro中使用DEFINES来实现条件编译

    1.pro中使用DEFINES来实现条件编译 在Qt的pro文件中使用DEFINES 来实现类似gcc -D的条件编译功能. 如,在pro中: #定义条件编译宏LAOER DEFINES += LAO ...

  2. QT跨平台项目开发经验(项目打包)

    1.代码编写 1.1 代码编写简短,代码运行效率高,适当注释.一般一个大型的项目,代码的运行效率要求较高,一般需要秒级响应,甚至毫秒级. 1.2 建议使用命名空间::的形式来访问该命名空间中的变量和函 ...

  3. 为什么要用Qt开发(Qt跨平台应用开发)

    一.为什么选择qt 1.跨平台,一次写代码多个平台编译.使跨平台应用达到各个平台原生应用的体验与流畅度.相比与java或c#在开发图形计算方面的软件时有非常好的使用体验与流畅度. 2.使用C++编程虽 ...

  4. 关于QT跨平台和编译器的理解

    1.概述 Qt工具包是一个完整封装的C 类库(可以类比MFC),并且使用一次编写,随处编译的方式,可用于构建多平台图形用户界面. 2.QT跨平台 qt在不同操作系统下都实现有不同的底层类库,然后再暴露 ...

  5. 01-为什么要用Qt开发(Qt跨平台应用开发)

    一.为什么选择qt 跨平台,一次写代码多个平台编译.使跨平台应用达到各个平台原生应用的体验与流畅度.相比与java或c#在开发图形计算方面的软件时有非常好的使用体验与流畅度. 使用C++编程虽然没有j ...

  6. Qt跨平台开发环境搭建

    Qt跨平台开发环境搭建 1.     背景介绍 Qt是一个跨平台的C++图形用户界面应用程序框架.它提供给应用程序开发者丰富的图形用户界面所需的所有功能.而且,Qt很容易扩展,并且允许真正地组件编程. ...

  7. QT跨平台使用Web引擎

    该例子支持Windows和Linux双系统实现,基于QT 5.14.2版本 Windows下安装webkit库,将下载的该压缩包拷贝至QT目录 qtwebkit-Windows-Windows_7-M ...

  8. QT pro 使用DEFINES来实现条件编译

    #定义条件编译宏LAOER DEFINES += LAOER #依赖编译宏LAOER的编译选项: contains(DEFINES, LAOER){message(hello Laoer) } #与编 ...

  9. Qt跨平台开发编程技巧总结

    一.数据类型 尽量使用Qt提供的数据类型,比如qint32,quint64等. typedef signed char qint8; /* 8 bit signed */ typedef unsign ...

最新文章

  1. [Python Machine Learning] 学习笔记之scikit-learn机器学习库
  2. cmd orcal 中文乱码
  3. Java多线程:Semaphore
  4. 【linux家常菜】redhat 6.5 安装yum
  5. 为 Sublime Text 3059 配置 PHP 编译环境
  6. Vue封装预约日期插件和发布到npm上
  7. 史上最奢华AirPods登场 售价直接翻四倍却还算良心
  8. 解决kali-2019.4中文乱码问题
  9. [Vue warn]: Cannot find element: #main
  10. Linux系统管理(6)——Linux下启动Redis服务的几种方法
  11. 错误代码: 1066 Not unique table/alias: #39;c#39;
  12. mysql事务 并发_Mysql关于事务并发带来的问题
  13. python有趣小程序-Python里的17个quot;骚操作”好玩有趣
  14. RK3288_Android7.1调试以太网ethernet
  15. java redis3.0_Java + Redis(第三章)
  16. ARM9 S3C2440 定时器中断
  17. 7、网友问答之ASCII字符传转换为数值-------------labview宝典
  18. SPSS统计分析与行业应用案例详解
  19. 上海CISSP认证培训课程圆满举办
  20. 计算机远程协助是什么,Windows7系统下远程协助和远程桌面有什么区别?

热门文章

  1. excel单元格斜线_学习记录-第二十四天(表姐excel从0到1-第1天)
  2. C#调用Media Player 控件播放音乐的常用方法及属性
  3. wordpress主题Vieu主题V4.5
  4. Python-Django毕业设计服装销售商城系统(程序+Lw)
  5. Unity模拟龙之谷人物行走简单控制
  6. linux下同一文件系统,Linux文件系统详解
  7. NTT入门 开拓者的卓识
  8. MMOARPG每周维护报告(七)-皮肤道具武器商城
  9. Asset Server 整理
  10. 数据:快来爬我呀!小白:ip被封了 数据:做个ip代理池吧!这样就可以继续爬我了