美文网首页Qt QML 杂记
Qt pro 文件使用设置指南 【文摘】

Qt pro 文件使用设置指南 【文摘】

作者: 赵者也 | 来源:发表于2017-11-05 10:10 被阅读118次

    说明:本文内容引自《C++GUI Qt4编程(第2版)》

    布兰切特 (Jasmin Blanchette) (作者), 萨默菲尔德 (Mark Summerfield) (作者), 闫锋欣 (译者), 曾泉人 (译者), 张志强 (译者)

    本文并非也无意用于任何形式的商业目的。转载请不要遗失以上的著作信息。

    Qt 工程文件主要分为三种:

    app(单独的应用程序)、lib(静态和动态库)和 subdirs(递归编译)。工程文件的类型可以使用 TEMPLATE 变量指定如下:

    TEMPLATE = lib

    Subdirs 模版可以用来编译子目录里的目标文件。在这种情况下,除 TEMPLATE = subdirs 外还需要指定 SUBDIRS 变量。在每个子目录中,qmake 会搜寻以目录名命名的.pro文件,并且会编译该工程。

    如果没有 TEMPLATE 这一项,那么默认工程是 app。对于 app 或者 lib 工程,最常用的变量是下面这些:

    1、HEADERS 指定工程的 C++ 头文件

    2、SOURCES 指定工程的 C++ 实现文件

    3、FORMS 指定需要 uic 处理的由 Qt 设计师生成的 .ui 文件

    4、RESOURCES 指定需要 rcc 处理的 .qrc 文件

    5、DEFINES 指定预定义的 C++ 预处理器符号

    6、INCLUDEPATH 指定 C++ 编译器搜索全局头文件路径

    7、LIBS 指定工程要链接的库。库既可以通过绝对路径指定,也可以使用源自 UNIX 的 -L 和 -l 标识符来指定(例如,-L/user/local/lib 和 -ldb_cxx)

    8、CONFIG 指定各种用于工程配置和编译的参数

    9、QT 指定工程所要使用的 Qt 模块(默认的是 core gui,对应于 QtCore 和 QtGui 模块)

    10、VERSION 指定目标库的版本号

    11、TARGET 指定可执行文件或库的基本文件名,其中不包含任何的扩展、前缀或版本号(默认的是当前的目录名)

    12、DESTDIR 指定可执行文件放置目录

    13、DLLDESTDIR 指定目标库文件放置的目录

    CONFIG 变量用来控制编译过程中的各个方面。它支持的参数有:

    (1) debug 是指编译具有调试信息的可执行文件或库,链接调试版的 Qt 库。

    (2) release 是指编译不具有调试信息的可执行文件和或库,链接发行版的 Qt 库。如果同时制定 debug 和 release,则 debug 有效。

    (3) warn_off 会关闭大量的警告。默认情况下,警告的状态是打开的。

    (4) qt 是指应用程序或库使用 Qt。这一选项是默认包括的。

    (5) dll 是指动态编译库。

    (6) staticlib 是指静态编译库。

    (7) plugin 是指编译一个插件。插件总是动态库,因此这一参数暗指 dll 参数。

    (8) console 是指应用程序需要写控制台(使用 cout,cerr,qWarning(),等等)。

    (9) app_bundle 只适用于 Mac OS X 编译,是指可执行文件被放到束中,这是 Mac OS X 的默认情况。

    (10)lib_bundle 只适用于 Mac OS X 编译,指库被放到框架中。

    要生成工程文件 toby.pro 的 makefile,可以输入:

    qmake toby.pro
    

    在这之后,可以调用 make 或 nmake 编译工程。通过键入以下命令,可以使用 qmake 生成一个 Microsoft Visual Studio 工程(.dsp或.vproj)文件:

    qmake–tp vc toby.pro
    

    在 Mac OS X 系统上,可以创建一个 XCode 工程文件:

    qmake–spec macx-xcode toby.pro
    

    要创建 makefile,可以输入:

    qmake–spec macx-g++ toby.pro
    

    这里的 -spec 命令行参数可以用来指定平台/编译器的组合。通常,qmake 可以正确地检测到所在的平台,但在某些情况下则有必要显式地指定平台情况。例如,在 Linux 上以 64 位模式调用 Intel C++ 编译器(ICC)生成 makefile,应当输入:

    qmake–spec linux-icc-64 toby.pro
    

    那些可用的规则在 Qt 的 mkspecs 目录中。

    尽管 qmake 的主要目的是生成 .pro 文件的 makefile,但也可以使用 -project 参数在当前目录下使用 qmake 生成 .pro 文件,例如:

    qmake–project
    

    在这种模式下,qmake 将搜索当前目录下已知扩展名(.h、.cpp、.ui,等等)的文件,生成一个列举这些文件的 .pro 文件。

    Pro 文件的注释以井号(#)开头,在行尾处结束。

    有时可能需要在 .pro 文件中指定包含空格的文件名。在这种情况下,只需要简单地把文件名用引号括起来即可。

    当在不同的平台上编译工程时,可能有必要基于平台指定不同的文件或者不同的参数。 qmake 的条件判断语法是:

    condition{
             then-case
    }else{
             else-case
    }
    

    Condition 部分可以是平台名字(例如,win32、unix 或者 macx),或者更复杂的断言。then-case 和 else-case 部分使用标准语法为变量赋值。例如:

    win32{
             SOURCES+= serial_win.cpp
    }else{
             SOURCES += serial_unix.cpp
    }
    

    else 分支是可选的。为了方便,当 then-case 部分仅有一条变量赋值,而且在没有 else-case 分支时,qmake 也支持单行形式的语法:

    condition:then-case
    

    例如:

    macx:serial_mac.cpp
    

    如果有几个工程文件需要共享相同的项,则可以把相同的项提取到单独的文件中,在各自的 .pro 文件中使用 include() 语句包含它们:

    include(../common.pri)
    
    HEADERS+= toby.h
    SOURCES+= main.cpp \
             toby.cpp
    

    通常,打算被别的工程文件所包含的工程文件会带有 .pri(工程包含)的扩展名。

    相关文章

      网友评论

        本文标题:Qt pro 文件使用设置指南 【文摘】

        本文链接:https://www.haomeiwen.com/subject/ljjcmxtx.html