• 不想太深入地去看qmake,可是,左等,右等,总不见Qt新的构建系统有什么新消息。还是整理一下qmake吧,由于没什么主题,还不知道本文最终会乱到什么程度。

注:你可能会对下面的内容感兴趣。

  • 浅谈 qmake 之 pro、pri、prf、prl文件

  • 浅谈 qmake 之 shadow build

  • qmake 之 CONFIG(debug, debug|release)

  • qmake 之 CONFIG 与 QT 乱谈

变量

$$varName
$${varName}

qmake工程文件内定义变量的值

$$(varName)

qmake运行时,环境变量的值

$(varName)

makefile被处理时,环境变量的值

$$[varName]

Qt配置选项的值

${varName}

你可能见过这个用法,但本文不讨论这个东西,以后用到时会提及

这4中用法区别何在?没有例子我还真说不明白...

$$varName

例子:

  • test.pro
projectname = dbzhang
FULL1 = $$projectname/800
FULL2 = $${projectname}800
!build_pass:message($$FULL2)

运行qmake时,输出结果是

Project MESSAGE: dbzhang/800 dbzhang800
  • 何时加大括号?当变量和后面的字符连接到一块的时候。
  • build_pass 干嘛用的?自己试试看吧,如果没有它,同样的消息在windows下会被输出3次(因为会生成3个makefile文件,每个一次)。

$$(varName)

环境变量,就是大家通常说得环境变量。例子:

  • test.pro
message($$(PATH))

运行qmake时,结果:

Project MESSAGE: /usr/bin:/home/debao/qt-labs/qt5/qtbase/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

$(varName)

makefile被处理时,环境变量的值?如何理解??

看例子:

  • test.pro
INCLUDEPATH += $(MYINCLUDEPATH)

执行qmake

$ export MYINCLUDEPATH="/home/dbzhang800/include"
$ qmake test.pro

生成的makefile:

...
INCPATH = -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I$(MYINCLUDEPATH) -I.
...

为了对比,可以将单$符号,改成$$再试试看看,运行命令,结果:

...
INCPATH = -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I/home/dbzhang800/include -I.
...

$$[varName]

Qt配置选项的值?何解??

  • 配置选项值有哪些?
debao@ubuntu:~/ttt/qmake-t1$ qmake -query
QT_INSTALL_PREFIX:/usr
QT_INSTALL_DATA:/usr/share/qt4
QT_INSTALL_DOCS:/usr/share/qt4/doc
QT_INSTALL_HEADERS:/usr/include/qt4
QT_INSTALL_LIBS:/usr/lib
QT_INSTALL_BINS:/usr/bin
...
  • 有什么用呢?比如,我们编译一个动态库,想将dll放置到Qt的bin目录下(供其它程序使用):
win32:{
    DLLDESTDIR = $$[QT_INSTALL_BINS]
    QMAKE_DISTCLEAN += $$[QT_INSTALL_BINS]\\dbzhang800.dll
}
  • 除了这些还有其他值么?恩,你可以自己设置一些值,比如
$ qmake -set dbzhang 800

然后就可以在pro文件内用 $$[dbzhang] 了

注:在Qt5下,有 qmake -unset dbzhang可以取消设置,在Qt4下没有 unset!

注:设置值是通过QSettings保存的。你应该知道保存在何处了,呵呵

QSettings(QSettings::UserScope, "Trolltech", "QMake");

晕死,4个这东西竟然写了这么长。只好本文标题中加个(一),慢慢写二三四了。

参考

  • http://developer.qt.nokia.com/wiki/Qt_Modules_Maturity_Level

  • http://labs.qt.nokia.com/2009/10/12/to-make-or-not-to-make-qmake-and-beyond/

  • http://labs.qt.nokia.com/2009/10/14/to-make-or-not-to-make-qmake-and-beyond-redux/

qmake 乱乱乱谈(一)相关推荐

  1. 移动式护栏巡逻机器人_重磅!移动式护栏巡逻执法机器人上岗!专盯高速乱停乱行!...

    在高速公路上行车 因为速度很快 所以千万不能乱停乱行 搞不好就让你万箭穿心 针对各种高速违法行为 又一执法神器上线 移动式护栏巡逻执法机器人 眼前这个小盒子,正是这款"移动式护栏巡逻执法机器 ...

  2. 对共享单车乱停乱放说不:首个电子围栏技术要求发布

    每次走出小区或者地铁,看到路边乱停乱放甚至是堆成小山似的共享单车,您是否也会和我一样发出一声叹息? 幸运的是,随着全国首个共享单车电子围栏技术要求的发布,这一乱象有望得到有效整治. 2018年3月22 ...

  3. 共享单车用完乱停乱放怎么办?“电子围栏” 来帮忙

    共享单车给市民带来便利的同时,乱停乱放却成了非常难以解决的问题.针对这种情况,上海市率先与小鸣单车合作,在晋元路上设置了国内首个针对共享单车的"电子围栏". 共享单车给市民带来便利 ...

  4. 计算机屏幕画面乱动如何解决,电脑屏幕不受控制乱跳怎么回事 电脑屏幕乱闪乱跳的处理方法...

    在当今的互联网时代,电脑设备已经算是比较普遍了,在使用过程中难免遇到一点小问题.有些网友留言说自己新电脑屏幕经常出现闪烁或者跳动的情况,出现此问题可能是显卡故障,有的时候纯粹是设置问题.不管什么原因, ...

  5. 机动车乱停乱放检测系统(源码&部署教程)

    1.识别效果展示 2.视频演示 [YOLOv7]基于YOLOv7的机动车乱停乱放检测系统(源码&部署教程)_哔哩哔哩_bilibili 3.YOLOv7算法简介 YOLOv7 在 5 FPS ...

  6. android 换行乱_浅谈Android textview文字对齐换行的问题

    今天忽然发现android项目中的文字排版参差不齐的情况非常严重,不得不想办法解决一下. 经过研究之后,终于找到了textview自动换行导致混乱的原因了----半角字符与全角字符混乱所致!一般情况下 ...

  7. 【乱】乱,乱,乱,android真乱!

    从手机商到运营商,从软件公司到平台网站,人人都做Android. 品牌手机几千元,山寨产品几百元; 操作系统你改一版,我改一版; 软件商店你出一个,我出一个--产品繁复无尽,应用层出不穷,市场混乱不堪 ...

  8. 电脑鼠标自己乱跳乱点_无线鼠标VS有线鼠标,二者区别何在?你可知晓?不妨来了解一下...

    直奔主题 抗干扰,有线鼠标由于其可以直接用线与电脑进行连接,因此其在使用时受外界干扰一般就都会比较小,所以说有线鼠标在稳定性方面确实也是会有着比较巨大的优势.而无线鼠标在这方面相对而言其确实也是会比较 ...

  9. excel打开csv错误换行_「乱吐槽·乱学习」excel高手捷径:一招鲜,吃遍天③

    大家好,我是阿乱.话说三十而立,至于立的是什么玩意儿就见仁见智吧(≧∇≦)ノ,不过旗杆什么的先放下来哈,咱们这里说的是身上得有多几个技能,好让我们立于不败之地嘛.当然也欢迎年轻人加入啦,反正你们也免不 ...

  10. Mac 技巧之苹果电脑 Mac OS X 系统下一键即密码锁定屏幕,防止别人乱用乱看的方法

    分类: Mac 2011-2-23 00:09 评论(5) 阅读(36028) Tags: macos 要离开苹果电脑,怕别人乱动.乱看,又不想合盖子让 Mac 休眠?下面的方法可以让 Mac OS ...

最新文章

  1. .NET 自定义Json序列化时间格式
  2. 硬核NeruIPS 2018最佳论文,一个神经了的常微分方程
  3. 转:亿级Web系统的高容错性实践(好博文)
  4. 《大道至简》第七八章读后感
  5. linux_mint语言卡住,使用linux mint 16的容易死机怎么处理?
  6. Asp.net Vnext IValueProvider
  7. 一部分 数据 迁移_从虚机到容器,知名架构师告诉你如何平滑进行业务迁移
  8. CVPR 2021 | 微软提出解构式关键点回归, 刷新COCO自底向上多人姿态检测记录!...
  9. 【英语学习】【Level 07】U03 Amazing wonders L1 My hometown
  10. 网易财报暗藏玄机,不经意间已编织出电商大网
  11. 请教如何保存matlab仿真出来的图,如何保存Matlab绘制出来的图像
  12. AI 秒杀人类!OpenAI 击败 DOTA2 世界冠军 OG
  13. .NET下载文件报错System.UnauthorizedAccessException的解决方法
  14. IE7的web标准之道——5:(修正)上去了!终于上去了!
  15. 微信语音识别开放平台
  16. Oracle或关闭中国研发中心,裁员1600 人
  17. TortoiseGit安装和使用的图文教程
  18. 人脸检测--libfacedetection
  19. 美国队长的工资 python代码-Python入门必学,用Python练习画个美队盾牌
  20. 单元测试、API接口测试、灰盒测试

热门文章

  1. ZMY_ImageLoader加载图片
  2. 阿里与抖音签订200亿合作后,96%用户竟直接在抖音小店下单
  3. Python3 简单的将多个PDF文件合成一个
  4. 罗振宇折戟创业板/ B站回应HR称用户是Loser/ 腾讯罗技年内合推云游戏掌机...今日更多新鲜事在此...
  5. oracle11.0安装教程,ORACLE 11g 安装教程
  6. 使用 CSS 创建下拉导航栏
  7. 系统克隆工具:操作系统一键迁移
  8. 基于c语言的递归算法分析论文,浅谈C语言递归算法.docx
  9. Java构造函数(构造方法)的简介说明
  10. oracle 全面预算,财辅全面预算管理系统的设计与实现(Eclipse,Oracle)