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工具编译里面的程序,就得到可执行程序啦~

  • 相关阅读:
    用户调查报告
    beta冲刺总结
    beta冲刺第七天
    beta冲刺第六天
    beta冲刺第五天
    beta冲刺第四天
    beta冲刺第三天
    beta冲刺第二天
    beta冲刺第一天
    简单的密码管理器(Python)(待完善)
  • 原文地址:https://www.cnblogs.com/sggggr/p/15023286.html
Copyright © 2011-2022 走看看