QT程序如何编译

如何编译程序?

使用qmake工程文件(.pro)来进行编译。pro类似VC中dsw,用来列出工程中的元文件。

 

有三类主要的工程文件类型:app,lib,subdirs(递归编译用)。可以由TEMPLATE变量指明

如:TEMPLATE = lib

如果要是subdirs,可以按照下面的方式:

TEMPLATE      = subdirs
SUBDIRS       =  yourdir 斜体表示需要人为指定的   QMAKE会去子目录找对应的.pro文件

如果没有TEMPLATE条目,则默认为app

 

一些app或lib常用的条目包括:

HEADERS

SOURCES

FORMS          指明.ui文件   (uic处理)

RESOURCES  指明.qrc文件 (rcc处理)

DEFINES      

INCLUDEPATH

LIBS

CONFIG      指明项目配置和编译选项

QT              指明项目使用的QT模块(默认模块是 core gui对应QtCore和QtGui两个模块)

VERSION     指明目标库的版本

TARGET      指明目标文件或库的基础名字(默认是当前目录)

DESTDIR     平台独立, WINDOW默认为DEBUG或RELEASE,LINUX默认为当前目录

DLLDESTDIR  默认同上

 

其余意义自明

 

CONFIG 选项可取下列值:

debug

release   如果debug和release同时存在,debug胜出

warn_off   默认打开

qt            应用程序或库使用QT,默认包含

dll

staticlib

plugin        通常是共享库,暗含dll选项

console      程序需要输出到控制台

app_bundle  Mac OS X编译需要

lib_bundle Mac OS X编译需要

 

有了.pro 文件后,我们可以通过qmake xx.pro来生成makefile文件

若想生成VS用的工程可使用,qmake –tp vc xx.pro

可以用-spec选项来制定平台和编译器组合,可参看mkspecs目录

 

.pro文件的语法为:

variable = values 

其中values为字符串组合,#标识注释,除了=之外,还支持+=,-=,*=(类似open o_create,没有就添加,有就算了)~=可以用正则表达式来替换值

 

我们可以使用$$variable或$${variable}来引用.pro文件中的变量的值,这就允许我们自定义variable,而不是前面描述过的条目。

$$lower()可用来将字符串转化为小写

$$system()可以使用外部程序生成的字符串,如$$system(uname -r)

.pro也支持这种条件语句

condition{

then-case

}else{            #option

else-case

}

这里的condition可以是平台名字,也可以更复杂,如contains(variableA,variableB) 表示A中是否包含B

 

如果我们有些共用的.pro文件可以在多个文件中共享,可以使用include() ,但这个pro文件常命名为  pri

 

看了上面这么多,可能有人会问,自己手写.pro太麻烦了 ,如果能自动生成就好了

呵呵,qmake的确也支持,试试  qmake –project ,当然,可以想象自动生成的.pro可能不会满足所有的要求,了解了上面这些内容,我们就可以自己动手了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值