zoukankan      html  css  js  c++  java
  • Qt程序学习(一)------pro文件

    pro文件简介、qmake命令简介

    为了介绍pro文件,不得不提一下qmake命令了。qmake命令的作用是让pro文件转变为
    Makefile文件而存在的。
    假如有一个StudyProject.pro文件,如果想要直接命令行方式生成makefile,可以输入 qmake StudyProject.pro;
    之后,就可以调用make或者nmake编译工程。也可以输入以下命令:
    qmake -tp vc StudyProject.pro
    来生成一个Microsoft Visual Studio 工程的.dsp/.vproj文件。
    如果你是在Mac OS X 系统上,则需要输入:
    qmake -spec macx-xcode StudyProject.pro
    来创建一个Xcode工程文件。
    或者输入:
    qmake -spec macx-g++ StudyProject.pro
    来创建一个makefile文件。

    这里的-spec的参数是用来指定平台/编译器的组合。通常,qmake可以正确的检查到所在的平台,但是某些情况下则有必要显示地指定平台情况。比如在linux上面以64位模式调用Intel c++编译器(ICC)生成makefile则需要输入:

    qmake -spec linux-icc-64 StudyProject.pro

    来达到这样的目的

    尽管qmake命令的主要目的是生成*.pro文件对应的makefile文件,但是这个命令也可用-project参数在当前目录下面生成.pro文件。比如,如果在一个目录下面输入:

    qmake -project

    则会在当前目录下面搜索已知的扩展名文件(.h/.cpp/.ui等)。然后生成一个列举了这些文件的.pro文件。

    pro文件的常用变量和参数

    pro文件是由Qt专门为了生成Makefile文件的一种文件,可以由qmake来进行编译。其目的是为了列举工程中包含的源文件。相比于自己写makefile文件,pro文件语法简明,容易学习!

    工程文件主要分为三种:app(单独的应用程序)、lib(静态和动态库)和subdirs(递归编译)。工程文件可以使用TEMPLATE变量指定:
    TEMPLATE = lib

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

    如果没有TEMPLATE这一项,那么默认工程是app.对于app或者lib工程,最常使用的变量有下面这些:
    HEADERS 指定工程的C++头文件(.h)
    SOURCES 指定工程的C++实现文件(.cpp)
    FORMS 指定需要uic处理的由Qt设计师生成的.ui文件
    RESOURCES 指定需要rcc处理的.qrc文件
    DEFINES 指定预定义的C++预处理器符号
    INCLUDEPATH 指定C++编译器搜索全局文件的路径
    LIBS 指定工程要链接的库。库既可以通过绝对路径指定,也可以使用Unix的-L和-l标识符来指定。
    CONFIG 指定各种用于工程配置和编译的参数
    QT 指定所要使用的Qt模块(默认的是core gui,对应于QtCore和QtGui模块)
    VERSION 指定目标库的版本号
    TARGET 指定可执行文件或者库的基本文件名,其中不包括任何的扩展、前缀或者版本号。(默认的是当前的目录名)
    DESTDIR 指定可执行文件放置的目录(默认值是平台相关的。例如,在Linux上,指当前目录;在Windows上,则是指debug或者release子目录)
    DLLDESTDIR 指定目标库文件放置的目录。(默认路径与DESTDIR相同)

    在这些变量中,CONFIG变量对应的参数比较重要且常用,用来控制编译过程的各个方面!因此单独罗列出来。它支持下面的这些参数:
    debug 是指编译具有调试信息的可执行文件或库,链接Qt库的调试版
    release 是指编译不具有调试信息的可执行文件或库,链接发行版的Qt库。同时指定debug和release,则debug有效。
    warn_off 会关闭大量的警告。默认情况下,警告的状态是打开的
    qt 是指应用程序或者库使用Qt。这一选项是默认包括的。
    dll 是指动态编译库
    staticlib 是指静态编译库
    plugin 是指编译一个插件。插件总是动态库,因此这一参数暗指dll参数
    console 是指应用程序需要写控制台(使用cout,cerr,qWarning(),等)
    app_bundle 只适用于Mac OS X编译,是指可执行文件被放到束中,这是Mac OS X的默认情况
    lib_bundle 只适用于Mac OS X编译,指库被放到框架中

    pro文件的基本语法

    pro文件中的条目的语法通常具有以下形式:
    variable =values #注释
    其中variable代表变量,values代表字符串列表,注释则以#开头,在行尾处结束。例如:
    CONFIG = qt release warn_off # 将列表["qt","release","warn_off"]赋值给CONFIG变量
    上面这行会覆盖CONFIG变量以前的各个值,只有+=是用来扩展变量的值的,例如:

    CONFIG = qt
    CONFIG += release
    CONFIG += warn_off
    

    这些语句和前面的例子等价,代表将列表[“qt”,”release”,”warn_off”]赋值给CONFIG变量。而-=操作符代表从当前的变量中移除所有出现的指定的值。例如:

    CONFIG = qt release warn_off
    CONFIG -= qt
    

    会使得CONFIG变量的值变为[“release”,”warn_off”]。

    pro文件的列子

    在熟悉了基本的pro文件的写法之后,就可以进行一些简单的编程了。当然还有一些pro文件的语法,以后有机会会继续提到的。
    先看一个简单的界面的例子:

    #include <QApplication>
    #include <QLabel>
    
    int main(int argc, char *argv[])
    {
        QApplication app(argc,argv);
        QLabel *label = new QLabel("<h2><i>Hello</i>"
                                   "<font color=red>World!</font></h2>");
        label->show();
        return app.exec();
    }
    

    将这个文件命名为main.cpp,然后在在同一个文件夹下面保存一个chapter1.pro文件,内容是:

    QT += widgets
    SOURCES += 
            main.cpp
    

    然后就可以直接用命令行在此文件夹下面使用qmake工具生成Makefile文件:
    qmake chapter1
    然后可以使用make工具编译里面的程序,就得到可执行程序啦~

  • 相关阅读:
    使用某些 DOCTYPE 时会导致 document.body.scrollTop 失效
    VB.NET 笔记1
    知识管理系统Data Solution研发日记之一 场景设计与需求列出
    知识管理系统Data Solution研发日记之五 网页下载,转换,导入
    折腾了这么多年的.NET开发,也只学会了这么几招 软件开发不是生活的全部,但是好的生活全靠它了
    分享制作精良的知识管理系统 博客园博客备份程序 Site Rebuild
    知识管理系统Data Solution研发日记之四 片段式数据解决方案
    知识管理系统Data Solution研发日记之二 应用程序系列
    知识管理系统Data Solution研发日记之七 源代码与解决方案
    知识管理系统Data Solution研发日记之三 文档解决方案
  • 原文地址:https://www.cnblogs.com/sggggr/p/15023286.html
Copyright © 2011-2022 走看看