文章目录

  • qmake 入门
    • 从简单开始
    • 使应用程序可调试
    • 添加平台特定的源文件
    • 如果文件不存在则停止 qmake
    • 检查多个条件

官方链接:https://doc.qt.io/qt-6/qmake-tutorial.html

qmake 入门

本教程教您 qmake 的基础知识。本手册中的其他主题包含有关使用 qmake 的更多详细信息。

从简单开始

假设您刚刚完成了应用程序的基本实现,并且创建了以下文件:

  • hello.cpp
  • hello.h
  • main.cpp

您将在 Qt 发行版的 examples/qmake/tutorial 目录中找到这些文件。关于应用程序的设置,您唯一知道的另一件事是它是用 Qt 编写的。首先,使用您最喜欢的纯文本编辑器在 examples/qmake/tutorial 目录中创建一个名为 hello.pro 的文件。 您需要做的第一件事是添加告诉 qmake 关于您的开发项目的源文件和头文件的行。

我们将首先将源文件添加到项目文件中。为此,您需要使用 SOURCES 变量。只需开始一个新行SOURCES +=并将 hello.cpp 放在它之后。像下面这样:

SOURCES += hello.cpp

我们对项目中的每个源文件重复此操作,直到得到以下内容:

SOURCES += hello.cpp
SOURCES += main.cpp

如果您更喜欢使用类似 Make 的语法,那么您可以一次性使用换行符转义所有文件,如下所示:

SOURCES = hello.cpp \main.cpp

现在源文件已在项目文件中列出,必须添加头文件。它们的添加方式与源文件完全相同,只是我们使用的变量名称是 HEADERS。

完成此操作后,您的项目文件应如下所示:

HEADERS += hello.h
SOURCES += hello.cpp
SOURCES += main.cpp

目标名称是自动设置的。它与项目文件名相同,但带有适合平台的后缀。例如,如果项目文件被叫作hello.pro,则目标名称在 Windows 上为 hello.exe,在 Unix 上为 hello。如果要使用不同的名称,可以在项目文件中设置:

TARGET = helloworld

完成的项目文件应如下所示:

HEADERS += hello.h
SOURCES += hello.cpp
SOURCES += main.cpp

您现在可以使用 qmake 为您的应用程序生成 Makefile。在命令行的项目目录中,键入以下内容:

qmake -o Makefile hello.pro

注意:如果您通过包管理器安装 Qt,则二进制文件可能是 qmake6.

然后键入 make 或 nmake 取决于您使用的编译器。

对于 Visual Studio 用户,qmake 还可以生成 Visual Studio 项目文件。例如:

qmake -tp vc hello.pro

使应用程序可调试

应用程序的发布版本不包含任何调试符号或其他调试信息。在开发过程中,生成具有相关信息的应用程序的调试版本很有用。这很容易通过添加 debug 到项目文件中的 CONFIG 变量来实现。

例如:

CONFIG += debug
HEADERS += hello.h
SOURCES += hello.cpp
SOURCES += main.cpp

像以前一样使用 qmake 生成 Makefile。现在,在调试环境中运行应用程序时,您将获得有关应用程序的有用信息。

添加平台特定的源文件

经过几个小时的编码,您可能已经开始着手应用程序的特定于平台的部分,并决定将平台相关的代码分开。因此,您现在有两个新文件要包含到您的项目文件中:hellowin.cpp 和 hellounix.cpp. 我们不能只将这些添加到 SOURCES 变量中,因为这会将两个文件都放在 Makefile 中。因此,我们需要在这里做的是使用一个作用域,该作用域将根据我们正在构建的平台进行处理。

为 Windows 添加平台相关文件的简单作用域如下所示:

win32 {SOURCES += hellowin.cpp
}

在为 Windows 构建时,qmake 添加 hellowin.cpp 到源文件列表中。在为任何其他平台构建时,qmake 会简单地忽略它。现在剩下要做的就是为 Unix 特定文件创建一个作用域。

完成后,您的项目文件应如下所示:

CONFIG += debug
HEADERS += hello.h
SOURCES += hello.cpp
SOURCES += main.cpp
win32 {SOURCES += hellowin.cpp
}
unix {SOURCES += hellounix.cpp
}

像以前一样使用 qmake 生成 Makefile。

如果文件不存在则停止 qmake

如果某个文件不存在,您可能不想创建 Makefile。我们可以使用 exists() 函数检查文件是否存在。我们可以使用 error() 函数停止 qmake 的处理。这与作用域的工作方式相同。只需将作用域条件替换为函数即可。检查名为 main.cpp 的文件如下所示:

!exists( main.cpp ) {error( "No main.cpp file found" )
}

该 ! 符号用于否定测试。也就是说,如果文件存在 exists( main.cpp ) 为真,如果文件不存在 !exists( main.cpp ) 则为真。

CONFIG += debug
HEADERS += hello.h
SOURCES += hello.cpp
SOURCES += main.cpp
win32 {SOURCES += hellowin.cpp
}
unix {SOURCES += hellounix.cpp
}
!exists( main.cpp ) {error( "No main.cpp file found" )
}

像以前一样使用 qmake 生成一个 makefile。如果您临时重命名 main.cpp,您将看到该消息并且 qmake 将停止处理。

检查多个条件

假设您使用 Windows,并且希望能够在命令行上运行应用程序时看到 qDebug() 输出的语句。要查看输出,您必须使用适当的控制台设置构建应用程序。我们可以很容易地将 console 加在 CONFIG 行上包含在 Windows 上的 Makefile 中。但是,假设我们只想在 Windows 上运行并且 debug 已经在 CONFIG 上时添加该 CONFIG 行。这需要使用两个嵌套作用域。首先创建一个作用域,然后在其中创建另一个。将要处理的设置放在第二个作用域内,如下所示:

win32 {debug {CONFIG += console}
}

嵌套作用域可以使用冒号连接在一起,因此最终的项目文件如下所示:

CONFIG += debug
HEADERS += hello.h
SOURCES += hello.cpp
SOURCES += main.cpp
win32 {SOURCES += hellowin.cpp
}
unix {SOURCES += hellounix.cpp
}
!exists( main.cpp ) {error( "No main.cpp file found" )
}
win32:debug {CONFIG += console
}

您现在已经完成了 qmake 的教程,并准备为您的开发项目编写项目文件吧。

qmake 手册:qmake 入门相关推荐

  1. qmake手册(Qt5.9.3)

    qmake手册 qmake手册 概观 描述一个项目 建立一个项目 使用第三方库 预编译头文件 入门 从简单的开始 使应用程序可调试 添加平台特定的源文件 如果文件不存在停止qmake 检查多个条件 创 ...

  2. qmake手册(初级部分)

    本站所有文章由本站和原作者保留一切权力,仅在保留本版权信息.原文链接.原文作者的情况下允许转载,转载请勿删改原文内容, 并不得用于商业用途. 谢谢合作. 原文链接: http://www.cuteqt ...

  3. 屏通触摸屏软件操作手册_屏通人机界面软件操作手册快速入门版.pdf

    屏通人机界面软件操作手册快速入门版 PM Designer 触控大师 屏 通 人 机 界 面 软件操作手册 快速入门版 0 目 录 第一章 PM Designer触控大师软件简介3 1.1 软件功能介 ...

  4. qmake 手册:变量

    文章目录 官方链接:https://doc.qt.io/qt-6/qmake-variable-reference.html

  5. python魔力手册-小白入门宝典:Python快速入门魔力手册 PDF 超清版

    给大家带来的一篇关于Python编程相关的电子书资源,介绍了关于小白入门.python入门.Python手册方面的内容,本书是由魔力手册出版,格式为PDF,资源大小11.8 MB,魔力手册编写,目前豆 ...

  6. python3.5中文手册_Python 入门指南 — Python3 中文手册 3.5.2 文档 | 三维部落

    Python 入门指南¶ Release:3.5.2 Date:2016 年 10 月 24 日 Python 是一门简单易学且功能强大的编程语言.它拥有高效的高级数据结构,并且能够用简单而又高效的方 ...

  7. python脚本编程手册_Python 入门指南 — Python2.7 手册 2.7 documentation - 脚本之家在线手册...

    Python 入门指南¶ Release:2.7 Date:December 06, 2014 Python 是一门简单易学且功能强大的编程语言.它拥有高效的高级数据结构,并且能够用简单而又高效的方式 ...

  8. stm32f407手册_入门篇 | STM32F407库函数开发L按键控制Led灯

    让文化·去旅行 点击上方蓝字可以关注我们哦 按键控制灯的亮与灭的效果图: 一.寄存器开发与库函数开发的优缺点 1.寄存器开发 缺点: (1)开发难度大,查阅相关手册比较多 (2)开发效率相对低,产品周 ...

  9. 小白的 Python 修炼手册:入门篇

    Life is short, you need Python.(人生苦短,我用 Python.) --Bruce Eckel 前言 听说现在是全民 Python 的时代,虽然不知道事实如何,但学会 P ...

最新文章

  1. Windows10 JDK9安装及配置环境变量与Eclipse安装
  2. Apache Flink 零基础入门(六)Flink核心概念
  3. 计算机能自动写程序,忘掉编程语言吧,微软想让计算机自动生成程序 | 一周 AI 新闻...
  4. 每日英语:Why is Ye Shiwen’s Swim “Disturbing”?
  5. 4022-基于链表的简单选择排序(C++,附思路)
  6. 职中计算机应用基础期末考试题,职中计算机应用基础期末试卷.doc
  7. Windows虚拟设备驱动开发总结
  8. 修改Foxmail日历,让星期一为每周第一天
  9. web前端课程设计:猫咪领养网站 HTML+CSS+JavaScript
  10. Unity在UGUI上使用Polygon Collider 2D实现不规则图案匹配
  11. 计算机盖,盖珂珂_北京理工大学计算机学院
  12. 敲黑板,定积分也有换元和分部积分法!
  13. ROS出现“Couldn't find executable named listener below //home/xxx/catkin_ws/src/mypack”问题
  14. 用计算机如何画柳条,柳条简笔画
  15. Two Bags of Bread
  16. jmeter安装成功后打不开,提示:Cause: CannotResolveClassException: com.blazemeter.jmeter.threads.concurrency.Conc
  17. DQL数据查询语言--select的巧妙用法
  18. 一个开发者自述:我是如何设计针对冷热读写场景的 RocketMQ 存储系统
  19. CELL_FACH和CELL_PCH状态
  20. 啊哈 算法 Java_《啊哈!算法》.啊哈磊.高清版.pdf

热门文章

  1. 趣图:攻击力超级强的车牌贴
  2. (Python)火狐浏览器,谷歌浏览器驱动下载Python
  3. mysql使用强制索引
  4. 通向 UNIX 天堂的 10 个阶梯--帮助 C++ 开发人员节省时间的技巧和工具
  5. 中国计算机网络专科学校前十名,全国大专排名2021最新排名表 全国大专排名前50名...
  6. C语言逆序数的程序,C语言实现逆序数
  7. 人生百岁几人得,珍惜在世每一天
  8. 100兆宽带电脑显示为啥只有10兆多,运营商骗了我们吗?
  9. 基于Matlab使用激光雷达检测分类跟踪车辆仿真(附源码)
  10. (学习java)水果超市管理系统