您的位置:首页 > 编程语言 > Qt开发

PRO文件详解

2016-07-12 20:38 381 查看
Qt中的Pro文件一般是不能直接用Make或Nmake编译的,因此对用的工具是qmake,可以生产makefile文件,之后再进行make操作。而makefile文件就是通过Pro文件生成的。

一、 文件的结构和组成

1. 注释:从“#”开始,一般占一行

2. 模板:告诉qmke所要生成的makefile文件类型,主要为以下几种:

a) app -建立一个应用程序的makefile。此为默认值。

b) lib- 建立一个库的makefile。

c) vcapp – 建立一个应用程序的VisualStudio项目文件。

d) vclib –建立一个库的VisualStudio项目文件。

e) subdirs – 此模板特殊,可以创建一个能够进入特定目录并且为一个项目生成makefile文件。

3. 制定生成应用程序的放置的文件目录。

DESTDIR += ../bin

4. 制定生成的应用程序的名称

TARGET = GeoVisAPP

5. 配置信息。CONFIG用来告诉qmake关于应用程序的配置信息。

CONFIG += qt warn_on release

a) qt 告诉qmake这个应用程序是使用Qt来连编的。也就是说qmake在连接和为编译添加所需的包含路径的时候会考虑到Qt库的。

b) warn_on 告诉qmake把编译器设置为输出警告信息。

c) release 告诉qmake应用程序必须被连编程一个为发布的应用程序。

6. 指定uic命令,将.ui文件转化成ui_*.h文件的存放目录。

UI_DIR += forms

7. 指定rcc命令,将.qrc文件转化成qrc_*.h文件的存放目录。

RCC_DIR += ../tmp

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

MOC_DIR += ../tmp

9. 指定目标文件(obj)的存放目录.

OBJECTS_DIR += ../tmp

10. 程序编译时依赖的相关路径.

DEPENDPATH += . forms include qrc sources

11. 头文件包含路径

INCLUDEPATH += .

#qmake时产生的信息,【$${a}读取变量a的字符串】,【$$(PATH)读取环境变量PATH】。

#message($$(PATH))

12. 源文件编码方式

CODECFORSRC = GBK

13. 工程中包含的头文件

HEADERS += include/painter.h

14. 工程中包含的.ui设计文件

FORMS += forms/painter.ui

15. 工程中包含的源文件

SOURCES += sources/main.cpp sources/painter.cpp

16. 工程中包含的资源文件

RESOURCES += qrc/painter.qrc

17. LIBS += -L folderPath //引入的lib文件的路径 -L:引入路径

LIBS += -L$$PWD/bin/ -lGeoVisSDK

18. Release:LIBS += -L folderPath // release 版引入的lib文件路径

19. Debug:LIBS += -L folderPath // Debug 版引入的lib 文件路径

20. DEFINES += XX_XX_XXX //定义编译选项,在.h文件中就可以使用:#ifdefine xx_xx_xxx

21. RC_FILE = xxx.ico

IDI_ICON1 ICON DISCARDABLE "logoicon.ico" //logo.rc文件

RC_FILE = logo.rc

22. 平台相关性处理

在这里需要做的是根据qmake所运行的平台来使用相应的作用域来进行处理。为Windows平台添加的依赖平台的文件的简单的作用域看起来就像这样:

Win32{SOURCE += gxPlugin.cpp}

二、 MakeFile文件

MakeFile文件生成: qmake –o Makefile app.pro

Vs用户,qmake可以生产“dsp”文件: qmake –tvcapp –o app.dsp app.pro

三、 pro文件示例

TEMPLATE = app #配置生成应用程序

QT += qml quick widgets sql xml #加载Qt库

CONFIG += qt warn_on debug release

SOURCES += main.cpp \

plugininfo.cpp \

pluginmanager.cpp \

pluginmserialize.cpp

INCLUDEPATH += .

RESOURCES += qml.qrc #资源文件

#图像文件

IMAGES = images/substation.png \

images/communication.png \

images/autocom.png \

QML_IMPORT_PATH =

#引入的lib文件,用于引入动态链接库

LIBS += qaxcontainer.lib

# Default rules for deployment.

include(deployment.pri)

HEADERS += \

plugininfo.h \

pluginmanager.h \

pluginmserialize.h

RC_FILE = logo.rc

BINLIB = ../../bin ../../xercesc/lib

UI_HEADERS_DIR = ../inc # .ui文件转会为**.h 存放的目录

UI_SOURCES_DIR = ../src # .ui文件转会为**.cpp存放的目录

QMAKE_LIBDIR = $${BINLIB}

release {

TARGET = scdtool #指定生成的应用程序名

OBJECTS_DIR = ../../obj/scdtool/release #指定目标文件(obj)的存放目录

}

debug {

TARGET = scdtool_d #指定生成的应用程序名

OBJECTS_DIR = ../../obj/scdtool/debug #指定目标文件(obj)的存放目录

}

MOC_DIR = $${OBJECTS_DIR}

DESTDIR = ../../bin #指定生成的应用程序放置的目录

四、 标志说明

release - 应用程序将以release模式连编。如果"debug"被指定,它将被忽略。

debug - 应用程序将以debug模式连编。

warn_on - 编译器会输出尽可能多的警告信息。如果"warn_off"被指定,它将被忽略。

warn_off - 编译器会输出尽可能少的警告信息。

下面这些选项定义了所要连编的库/应用程序的类型:

qt - 应用程序是一个Qt应用程序,并且Qt库将会被连接。

thread - 应用程序是一个多线程应用程序。

x11 - 应用程序是一个X11应用程序或库。

windows - 只用于"app"模板:应用程序是一个Windows下的窗口应用程序。

console - 只用于"app"模板:应用程序是一个Windows下的控制台应用程序。

dll - 只用于"lib"模板:库是一个共享库(dll)。

staticlib - 只用于"lib"模板:库是一个静态库。

plugin - 只用于"lib"模板:库是一个插件,这将会使dll选项生效。

TARGET变量指定生成的二进制代码的路径和文件名,如果建立的是一个链接库的话,它会在文件名前面自动加上"lib"和在最后自动加上".so".

我们在使用过程中可能会使用到另外的一些函数库,链接库等。函数库的头文件指定使用INCLUDEPATH变量,其它链接库的指定可以通过LIBS 变量来指定,例LIBS += -lmath -L/usr/local/lib

DEFINES变量的指定就如同make的-D选项一样。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Qt PRO 文件详解