找回密码
 立即注册
收起左侧

【独家连载】Qt入门与提高:ks02-04 pro 文件常用配置

0
回复
7052
查看
[复制链接]
累计签到:41 天
连续签到:1 天
来源: 原创 2018-10-4 22:43:05 显示全部楼层 |阅读模式

马上注册,查看详细内容!注册请先查看:注册须知

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 baizy77 于 2019-7-2 20:24 编辑

版权声明
---------------------------------------------------------------------------------------------------------------------
该文章原创于Qter开源社区(www.qter.org
作者: 女儿叫老白
转载请注明出处!
---------------------------------------------------------------------------------------------------------------------

网页版课程源码 提取码:1uy7

引言
----------------------------------------------------------------------------------------------------------------------
      前面章节我们通过一个exe的例子介绍了pro文件的基本配置,今天我们来看一下在跨平台开发中pro文件的一些常用配置。
正文
----------------------------------------------------------------------------------------------------------------------
1, exe还是dll---TEMPLATE
       我们开发一个程序时,要么是exe程序、要么是dll程序,这由啥来决定呢?首先来介绍一下TEMPLATE配置项。该配置项用来确定我们生成的程序是exe还是dll。
       TEMPLATE     = app # 表示本项目生成一个exe。
TEMPLATE     = lib  # 表示本项目生成一个dll。
       TEMPLATE     = subdirs  # 表示本项目将扫描指定的子目录集合并执行
# 相关操作,经常与SUBDIRS参数配合使用,
# 比如指定需要翻译的子目录列表时,可以用
# 该配置。


2, 用什么开发语言呢---LANGUAGE
语法:LANGUAGE =C++
表示本项目用C++语言开发。
注意: C要大写。


3, 生成的模块名称---TARGET
语法:TARGET = xxx
本项目生成的程序的名字为xxx。
比如,如果WINDOWS上生成的是prog.exe或者prog.dll,在LINUX上生成的是libprog.so.1.0.0,都可以用:
TARGET= prog

4, debug还是release---CONFIG
语法:CONFIG  +=  xxx  xxx  xxx(表示增加某些CONFIG配置项,中间用空格区分)
语法:CONFIG  -=  xxx  xxx  xxx(表示删除某些CONFIG配置项)

release: 以release版本构建。如果也指定debug,最后一个生效。可以用+/-进行控制,如CONFIG -= release, CONFIG+=release
debug: 项目以debug模式构建。可以用+/-进行控制。
debug_and_release: 项目准备以debug和release两种模式构建。
precompile_header:可以在项目中使用预编译头文件的支持。
warn_on:编译器应该输出尽可能多的警告。如果也指定了warn_off,最后一个生效。warn_off:编译器应该输出尽可能少的警告。
rtti:启用RTTI支持。默认情况下,使用编译器默认。关闭则用rtti_off。
stl:启用STL支持。默认情况下,使用编译器默认。关闭则用stl_off。
thread:启用线程支持。当CONFIG包括qt时启用,这是缺省设置。
qt:表示需要链接qt的库。一般使用Qt类库时需要该配置项,如果是开发服务模块,一般会使用其他类库或者自行编写类库,所以编写服务模块时一般不用qt(写成:CONFIG -= qt)。
c++11: 启用c++11支持。如果编译器不支持c++11这个选项,没有影响。默认情况下,支持是禁用的。
c++14: 启用c++14支持。如果编译器不支持c++14这个选项,没有影响。默认情况下,支持是禁用的。


5,  使用qt的哪些模块---QT
语法:QT +=  xxx  xxx xxx (表示增加某些QT配置项,中间用空格区分)
语法:QT -=  xxx  xxx xxx (表示删除某些QT配置项)

指定项目中使用Qt的模块。默认情况下,QT包含core和gui,以确保标准的GUI应用程序无需进一步的配置就可以构建。
如果想建立一个不包含Qt GUI模块的项目,可以使用“ -=”操作符。
下面一行将构建一个不带gui的Qt项目:
QT  -=  gui  # 仅仅使用core模块
如果要创建一个界面(widget),里面用到XML及网络相关的类,那么需要包含如下模块:
QT += widgets xml network
请注意:
  如果您需要用到ui文件,请务必配置QT+= widgets,否则编译时将无法通过uic处理ui文件(无法生成ui文件对应的.h文件),将导致编译失败。

6,  各种DIR | 各种PATH
DEPENDPATH:
指定查看解决依赖关系的目录列表,当包含文件时使用:
DEPENDPATH += .  forms include  qrc  sources

INCLUDEPATH:
       指定编译项目时应该被搜索的#include目录,比如:
       INCLUDEPATH = $$(TRAINDEVHOME)/include

DESTDIR:
       指定目标文件的存放位置。
       DESTDIR = ../../lib

MOC_DIR:
       指定来自moc的所有中间文件放置的目录(含Q_OBJECT宏的头文件转换成标准.h文件的存放目录)。比如:
       MOC_DIR = $$(TRAINDEVHOME)/obj/moc

OBJECTS_DIR:
       指定所有中间文件.o(.obj)的存放目录,比如:
       OBJECTS_DIR = $$(TRAINDEVHOME)/obj/chapter02/ks02_04

RCC_DIR:
       指定Qt资源编译器输出文件的目录(.qrc文件转换成qrc_*.h文件的存放目录),比如:
       RCC_DIR =$$(TRAINDEVHOME)/obj/chapter02/ks02_04/resources

UI_DIR:
       指定qt的uic命令转换ui文件得到的所有中间文件放置的目录(.ui文件转化成ui_*.h文件的存放目录),比如:
       UI_DIR =$$(TRAINDEVHOME)/obj/chapter02/ks02_04/ui


7, FORMS:
       指定项目使用的UI文件。在编译前被uic处理。所有的构建这些UI文件所需的依赖、头文件和源文件都会自动被添加到项目中。
       FORMS = mydlg.ui \
                        login.ui


8, HEADERS :
       指定项目用到的h文件,比如:
       HEADERS = abc.pro \
                         myfile.h \
                       ../../comdll/mycom.h \
                       $$(TRAINDEVHOME)/include/base.h
注:
*. 将pro文件添加到HEADERS是为了方便,这样就可以在VisualStudio工具中直接找到pro文件,而无需到资源管理器查找。
*. 可以用相对路径的语法,比如:../../comdll/mycom.h
*. 可以使用环境变量,比如: $$(TRAINDEVHOME)/include/base.h
*. 使用”\”进行换行。


9, SOURCES:
       项目用到的cpp文件,语法、注意点同HEADERS。


10, RESOURCES:
       项目用到的资源文件 (qrc) 的名称,比如:
       RESOURCES += mdi.qrc


11, LIBS:
       指定链接到项目中的库列表。使用-l(小写的L)和-L两种语法。
       -l,表示库文件名,比如,下面的语句表示链接到库文件mycomm。
       LIBS  += -lmycomm
       -L,表示库文件所在的路径,比如,下面的语句表示库文件所在目录为:/usr/local/myprogram/lib,链接的库文件为mycomm、fesp。
       LIBS  += -L/usr/local/myuprogram/lib \
                        -lmcomm \
                        -lfesp


12, TRANSLATIONS
       指定包含用户界面翻译文本的翻译(.ts)文件列表,比如:
       #xxxfortranslations.pro
       TRANSLATIONS =translations/graphplatform_zh_CN.ts
       该配置将被lupdate命令读取(如下,手工执行该命令), 生成的ts文件就保存在TRANSLATIONS所指向的文件名。
       lupdate xxxfortranslations.pro


13, SUBDIRS
       同template=subdirs配合使用。
       该配置指出本项目包含的子目录,可以用来扫描生成翻译文件,或者级联生成整个项目的Makefile。
       SUBDIRS    = \
                        esfc   \
                        common \
                        phcore \
                        phwidget

       如果pro包含上述内容,那么对该pro执行qmake时,qt会自动进入SUBDIRS所包含的各个子目录,分别执行qmake。

注:
----------------------------------------------------------------------------------------------------------------------
       修改pro或pri文件后,务必重新执行qmake或qmake –tp vc,
       以便更新Makefile或者VisualStudio的项目文件(.vcxproj)

结语
----------------------------------------------------------------------------------------------------------------------
       今天,我们给大家介绍了pro文件常用的一些配置,内容稍微有点多。如果我没讲明白,希望大家能反馈一下宝贵意见。

课程目录: 【独家连载】《Qt入门与提高-GUI产品开发》目录
上一节:KS02-03   加点料-增加一张图片
下一节:KS02-05   pri 文件有啥用?

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了