Qt pro文件整理归纳

刚刚开始接触qt的时候,从新建工程到项目完成,都没有打开过pro文件,随着时间以及项目复杂度的变化,发现pro文件的理解决定了一个项目的好坏和灵活程度。为了方便以后相关配置的查找,现在先将常用的一些配置信息进行归纳整理

配置

QT

这个是添加QT项目需要的模块的,若项目中要排除某个模块,也可用QT -=配置项。

TARGET

指定生成的目标文件的名称

TEMPLATE(模板变量)

这个配置项确定qmake为这个应用程序生成哪种makefile 。有下面五种形式可供选择:

  • app 创建一个用于构建应用程序的Makefile(默认)。
  • lib 创建一个用于构建库的Makefile。
  • subdirs 创建一个用于构建目标子目录的Makefile,子目录使用SUBDIRS变量指定。
  • aux 创建一个不建任何东西的Makefile。如果没有编译器需要被调用来创建目标,比如你的项目使用解释型语言写的,使用此功能。注:此模板类型只能用于Makefile-based生成器。特别是,它不会工作在vcxproj和Xcode生成器。
  • vcapp 仅适用于Windows。创建一个Visual Studio应用程序项目。
  • vclib 仅适用于Windows。创建一个Visual Studio库项目。

CONFIG(告诉qmake关于应用程序的配置信息)

指定编译器选项和项目配置,值由qmake内部识别并具有特殊意义。用来告诉qmake关于应用程序的配置信息,使用+=表示在现有的配置上添加,这样会更安全。比如,CONFIG += qt warn_on release 其具体的意义为:
qt : 告诉qmake此程序是使用qt来连编的,即qmake在连接、为编译添加所需包含路径时会考虑qt的库;
warn_on :告诉qmake要将编译器设置为输出警告信息形式;
release :告诉qmake应用程序必须被连编为一个可发布的应用程序。开发过程中,也可以使用debug;
其它的编译标志为下表:

选项 说明
release 项目以release模式构建。如果也指定了debug,那么最后一个生效。
debug 项目以debug模式构建。
debug_and_release 项目准备以debug和release两种模式构建。
debug_and_release_target 此选项默认设置。如果也指定了debug_and_release,最终的debug和release构建在不同的目录。
build_all 如果指定了debug_and_release,默认情况下,该项目会构建为debug和release模式。
autogen_precompile_source 自动生成一个.cpp文件,包含在.pro中指定的预编译头文件。
ordered 使用subdirs模板时,此选项指定应该按照目录列表的顺序处理它们。
precompile_header 可以在项目中使用预编译头文件的支持。
warn_on 编译器应该输出尽可能多的警告。如果也指定了warn_off,最后一个生效。
warn_off 编译器应该输出尽可能少的警告。
exceptions 启用异常支持。默认设置。
exceptions _off 禁用异常支持。
rtti 启用RTTI支持。默认情况下,使用编译器默认。
rtti_off 禁用RTTI支持。默认情况下,使用编译器默认。
stl 启用STL支持。默认情况下,使用编译器默认。
stl_off 禁用STL支持。默认情况下,使用编译器默认。
thread 启用线程支持。当CONFIG包括qt时启用,这是缺省设置。
c++11 启用c++11支持。如果编译器不支持c++11这个选项,没有影响。默认情况下,支持是禁用的。
c++14 启用c++14支持。如果编译器不支持c++14这个选项,没有影响。默认情况下,支持是禁用的。

SUBDIRS

用于创建子的项目的合集,举个例子

TEMPLATE = subdirs
 
SUBDIRS =\
        raknet\
    onetengine \
    omisc \
    testDebugShow
 
onetengine.depends = raknet omisc
testDebugShow.depends = omisc

TEMPLATE=subdirs这是固定写法,声明是做工程集目录的.SUBDIRS是指明目录中有哪些项,可以嵌套另一个subdirs型的pro. 接下来可以详细定义其中的项目.如.depends表示左边的依赖=后面的项目.

选项 说明
.subdir 指定子项的目录,不使用子项本身的名字.
.file 明确指定该子项使用的pro文件,默认是根据名字自动找的,该项不和.subdir同时使用
.condition Specifies a bld.inf define that must be true for subproject to be built. Available only on Symbian platform.
.depends 该子项依赖指定的子项,只在使用makefiles的平台有效
.makefile 该子项的makefile,只在使用makefiles的平台有效
.target 该子项的TARGET,只在使用makefiles的平台有效

OTHER_FILES

网上相关的介绍比较少,个人见解,一般是拿来放置一些不需要qmake处理的文件

DEFINES

添加qmake预处理的宏,很多工程在不同的编译条件下会进行差异编译,比如测试版本、正式版、试用版等,部分功能会进行限制和隐藏。举例:
pro文件中添加

DEFINES += TEST_VERSION

在代码模块:

#ifdef TEST_VERSION
    // TODO
#else
    // TODO
#endif

INCLUDEPATH

指定编译的时候搜索头文件的目录

  • 很多时候我们在进行头文件包含的时候,由于目录层次太深,需要定位好几层文件夹才能找到相应的.h文件
  • 包含的头文件是绝对路径,可以将其路径包含进来
    举例:
INCLUDEPATH += $$PWD/customWgt c:/msdev/include

customWgt文件夹就是在项目跟目录下面 c:/msdev/include里面包含的头文件跟项目所在地方没有关系

注意:当包含的路径有空格,需要在路径加引号:

win32:INCLUDEPATH += "C:/mylibs/extra headers"
unix:INCLUDEPATH += "/home/user/extra headers"

SOURCES

用来指定工程中包含的源文件。

RESOURCES

用来指定工程中包含的资源文件 qrc

HEADERS

用来指定工程中所包含的头文件
qmake会自动检测是头文件的类中是否需要moc,并增加适当的依赖关系和文件到项目中,来生成和链接moc文件。

FORMS

用来指定工程中的ui文件

LIBS

用来指定引入的lib文件的路径
例子:

win32:CONFIG(release, debug|release): LIBS += -L$$PWD/DynamicLib/lib/ -lDynamicLib
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/DynamicLib/lib/ -lDynamicLibd

当是release模式的时候,在$$PWD/DynamicLib/lib目录下面找到 DynamicLib文件,一般不需要添加文件的后缀

MOC_DIR

用来指定moc命令,将含有Q_OBJECT的头文件转换成标准.h文件存放的目录。

RC_ICONS

在QT4时代,为Windows平台的qt程序添加图标,需要创建一个.rc文件然后在里面输入一行代码,还要修改pro文件。在现在的qt5中将.ico图标文件放到源码目录,然后添加

RC_ICONS = Myico.ico

应用程序的图标便添加成功了

目前先写这么多,后期会继续补充,欢迎一起讨论添加

你可能感兴趣的:(Qt开发技能)