我是靠谱客的博主 不安西牛,最近开发中收集的这篇文章主要介绍qmake:构建通用项目类型,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Qt 常见项目类型:应用程序、库、插件。

一、构建应用程序

app 模板告诉 qmake 生成将构建应用程序的 Makefile。 使用此模板,可以通过将以下选项之一添加到 CONFIG 变量定义来指定应用程序的类型:

  • windows:应用程序是一个窗口 GUI 程序。
  • console:应用程序是 Windows 控制台程序。
  • testcase:应用程序是一个测试用例。

使用此模板时,会识别以下 qmake 系统变量。应在 .pro 文件中使用这些变量来指定有关应用程序的信息。

  • HEADERS:应用程序的头文件列表。
  • SOURCES:应用程序的 C++ 源文件列表。
  • FORMS:应用程序的 UI 文件列表(使用 Qt 设计器创建)。
  • LEXSOURCES:应用程序的 Lex 源文件列表。
  • YACCSOURCES:应用程序的 Yacc 源文件列表。
  • TARGET:应用程序的可执行文件的名称。默认为项目文件的名称。(如果有扩展名,会自动添加)。
  • DESTDIR:放置目标可执行文件的目录。
  • DEFINES:应用程序所需的附加预处理器定义的列表。
  • INCLUDEPATH:应用程序所需的其他包含路径的列表。
  • DEPENDPATH:应用程序的依赖项搜索路径。
  • VPATH:查找提供的文件的搜索路径。
  • DEF_FILE:仅限 Windows—要链接到应用程序的 .def 文件。

二、构建库

lib 模板告诉 qmake 生成将构建库的 Makefile。使用此模板时,除了应用模板支持的系统变量外,还支持 VERSION 变量。

使用 lib 模板时,可以将以下选项添加到 CONFIG 变量以确定构建的库类型:

  • dll:该库是一个共享库 (dll)。
  • staticlib:该库是一个静态库。
  • plugin:该库是一个插件。

还可以定义以下选项以提供有关库的其他信息。

  • VERSION:目标库的版本号。例如VERSION = 2.3.1。

库的目标文件名取决于平台。例如,在 X11、macOS 和 iOS 上,库名称将以 lib 为前缀。在 Windows 上,不会向文件名添加前缀。


三、构建插件

插件是使用 lib 模板构建的。这告诉 qmake 为项目生成一个 Makefile,它将以适合每个平台的形式构建插件,通常以库的形式。与普通库一样,VERSION 变量用于指定有关插件的信息。

3.1、构建 Qt Designer (Qt 设计器)插件

Qt Designer 插件是使用一组特定的配置设置构建的,这些配置取决于 Qt 为系统配置的方式。为方便起见,可以通过将 designer 添加到 QT 变量来启用这些设置。例如:

  QT          += widgets designer

四、在debug和Release模式下构建和安装

CONFIG 变量可以包含debug和Release选项,但只应用最后指定的选项。

4.1、在两种模式下构建

要在两种模式下构建项目,必须将 debug_and_release 选项添加到 CONFIG 变量:

  CONFIG += debug_and_release

  CONFIG(debug, debug|release) {
      TARGET = debug_binary
  } else {
      TARGET = release_binary
  }

上述代码段中的范围修改了每种模式下的构建目标,以确保生成的目标具有不同的名称。

qmake在处理工程文件时,会生成Makefile规则,允许工程在两种模式下构建。这可以通过以下方式调用:

  make all

可以将 build_all 选项添加到项目文件中的 CONFIG 变量中,以确保项目默认在两种模式下构建:

  CONFIG += build_all

这允许使用默认规则处理 Makefile:

  make

4.2、在两种模式下安装

build_all 选项确保在调用安装规则时将安装目标的两个版本:

  make install

最后

以上就是不安西牛为你收集整理的qmake:构建通用项目类型的全部内容,希望文章能够帮你解决qmake:构建通用项目类型所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(57)

评论列表共有 0 条评论

立即
投稿
返回
顶部