使用qmake工具构建QT应用程序

本文详细介绍了QT项目构建过程中的关键工具moc和qmake的使用方法。moc用于处理含Q_OBJECT宏的文件,生成包含元对象代码的头文件。qmake则负责生成Makefile,便于项目的跨平台构建。文中还提供了配置.pro文件的具体指导,以及如何通过配置自动运行moc的例子。
摘要由CSDN通过智能技术生成

    moc命令:用于处理含Q_OBJECT语句(即用到时了信号和槽)的QT类定义头文件(或源文件),以产生出包含QT元对象代码的标准头文件,这样经过处理后的头文件才能在源文件中使用。注意若用qmake工具来构建QT程序,可以设置规则来自动运行moc,无需我们直接运行moc来处理头文件
    qmake是一个跨平台的程序,使用qmake来构建QT应用程序的步骤:
    qmake -project:收集项目信息,比如源文件、头文件、目标二进制文件、库位置等,生成一个跨平台的.pro项目文件(也可自己编写),这个文件用来生成Makefile文件
    qmake(-makefile):根据.pro文件生成Makefile文件。接下来就可以运行make工具来编译项目了

    .pro文件的格式:
    TEMPLATE=app:指定模板变量,表示生成的Makefile类型。app(为默认值)建立应用程序的makefile;lib建立库的makefile;vcapp建立应用程序的Visual Studio项目文件;vclib建立库的Visual Studio项目文件;subdirs创建子目录编译方式的makefile
    SUBDIRS=src1:指定子目录
    TARGET=filename:指定生成的应用程序名(默认为项目名)
    DEPENDPATH+=.:指定程序编译时依赖的相关路径(+=表示追加,=则表示直接指定,下面类同)
    INCLUDEPATH+=.:指定头文件包含路径
    DESTDIR+=bin:指定应用程序放置的目录
    UI_DIR+=form:指定ui界面文件生成的头文件存放目录(ui文件会由uic命令处理并生成ui_*.h头文件)
    RCC_DIR+=qrc:指定qrc资源文件生成的头文件存放目录(rcc命令会将.qrc文件转换成qrc_*.h文件)
    MOC_DIR+=moc:指定moc生成的头文件存放目录(moc命令将含Q_OBJECT的头文件转换成标准.h文件)
    OBJECTS_DIR+=obj:指定目标文件存放的目录
    CONFIG+=qt warn_on release:指定编译配置信息,如qt表示用QT库来编译,warn_on把编译器设为输出警告信息,release编译为发布程序,还有debug、debug_and_release等
    message($$(PATH)):用于qmake构建时产生消息。$${a}表示读取变量a的字符串,$$(PATH)读取环境变量PATH
    win32{ }:添加作用域,把语句放在作用域中,则在其他平台上运行时会忽略
    exit():测试一个文件是否存在
    error():停止运行qmake,并打印一条错误消息
    HEADERS+=hello.h:指定头文件
    SOURCES+=filename.cpp:指定源文件
    FORMS+=form/filename.ui:指定.ui界面设计文件
    RESOURCES+=qrc/painter.qrc:指定.qrc资源文件

    下面是QT 4.5版的一个项目文件例子:

    下面来构建一个简单的QT项目ButtonWindow(程序原型来自于<<Linux程序设计(第3版)>>)。程项目有两个文件ButtonWindow.h、ButtonWindow,如下:

 

 

    由于用到了信号与槽,含有O_OBJECT语句,故要修改项目文件使其自动运行moc。
    (1)运行qmake,生成ButtonWindow.pro项目文件。

    (2)修改ButtonWindow.pro文件,增加MOC_DIR指定moc文件存放的目录,这样就会自动运行moc来处理头文件。还可增加OBJECTS_DIR指定目标文件存放的目录。修改后的项目文件如下:

    (3)运行qmake,根据项目文件来生成Makefile文件。根据配置,还生成了两个子目录moc和obj。

    (4)接下来就可以用make来编译项目了,moc处理生成的文件会放在moc子目录下,编译生成的.o目标文件会放在obj子目录下。

    用./ButtonWindow即可运行生成的程序。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值