如何使用QMake的子目录模板?

2024-03-19

我开始学习Qt。我即将离开 Visual Studio 世界,正在寻找一种使用 QMake 组织项目结构的方法。我找到了“子目录”模板,但我很难理解它。

我的项目结构如下所示:

project_dir/
    main.cpp
    project.pro
    logic/
      logic.pro
      some logic files
    gui/
      gui.pro
      gui files

My 项目.pro看起来像这样

TEMPLATE = subdirs
SUBDIRS = logic \
          gui
SOURCES += main.cpp

In the .pro我有适当的子目录文件SOURCES, HEADERS and 资源变量集。

请告诉我什么TARGET, TEMPLATE以及我应该在中设置的其他必要值.pro files.

另外,除了官方教程之外,还有其他好的 QMake 教程吗?


此外游吟诗人的评论 https://stackoverflow.com/questions/1417776/how-to-use-qmakes-subdirs-template/1417801#1417801,我要指出的是SUBDIRStarget 仅适用于指定子目录。因此,你的额外行

SOURCES += main.cpp

你的project.pro文件中的内容不正确,并且在最坏的情况下可能无法构建你的main.cpp文件。最好的情况是,qmake 会拒绝解析该文件,因为它包含冲突的规范。

我用过SUBDIRS模板几次,如果您可以将部件构建到或多或少独立的库中,那么它会做得很好,显然就像您将逻辑和 GUI 分开一样。这是执行此操作的一种方法:

project_dir/
-project.pro
-common.pri
-logic/
----logic.pro
----some logic files
-gui/
----gui.pro
----gui files
-build/
----build.pro
----main.cpp

项目.pro:

TEMPLATE = subdirs
SUBDIRS = logic \
          gui

# build must be last:
CONFIG += ordered
SUBDIRS += build

通用.pri:

#Includes common configuration for all subdirectory .pro files.
INCLUDEPATH += . ..
WARNINGS += -Wall

TEMPLATE = lib

# The following keeps the generated files at least somewhat separate 
# from the source files.
UI_DIR = uics
MOC_DIR = mocs
OBJECTS_DIR = objs

逻辑/logic.pro:

# Check if the config file exists
! include( ../common.pri ) {
    error( "Couldn't find the common.pri file!" )
}

HEADERS += logic.h
SOURCES += logic.cpp

# By default, TARGET is the same as the directory, so it will make 
# liblogic.a (in linux).  Uncomment to override.
# TARGET = target

图形用户界面/图形用户界面.pro:

! include( ../common.pri ) {
    error( "Couldn't find the common.pri file!" )
}

FORMS += gui.ui
HEADERS += gui.h
SOURCES += gui.cpp

# By default, TARGET is the same as the directory, so it will make 
# libgui.a (in linux).  Uncomment to override.
# TARGET = target

构建/构建.pro:

TEMPLATE = app

SOURCES += main.cpp

LIBS += -L../logic -L../gui -llogic -lgui

# Will build the final executable in the main project directory.
TARGET = ../project
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用QMake的子目录模板? 的相关文章

  • Q_PROPERTY NOTIFY 信号及其参数

    我有写 propertyChanged 的习惯signals 带参数 这样接收端就不需要调用Q PROPERTY s READ明确地发挥作用 我这样做是出于清晰的考虑 并且假设在 QML 数据绑定情况下 不需要对 getter 进行 昂贵
  • 将 qDebug 重定向到 QTextEdit

    我想用qInstallMessageHandler handler 重定向qDebug to QTextEdit 我在类中定义了一个处理函数 void Spider redirect QtMsgType type const QMessag
  • 设置 ItemIsMovable 标志时,子项在 QGraphicsView 中不可移动

    要调整项目中的项目QGraphicsView http qt project org doc qt 5 0 qtwidgets qgraphicsview html 我将表示顶点的子项放到要移动的项上 使用构造函数中建立的父子关系 就是下图
  • Qt Ui 命名空间

    命名空间有什么意义Ui这是Qt自动生成的吗 这两个命名空间相同吗 在第一个中 其中包含 MainWindow 类的前向声明ui MainWindow h为什么它没有声明为class Ui MainWindow 编译器如何知道 MainWin
  • 在Linux上运行MFC程序

    我有一个相当大的基于 MFC 的程序 我的任务是让它在 Linux 上运行 我已经解释过 这需要将程序重新编写为带有 STL 的直接 C 更多工作 或者重新编写为 Qt C 更少工作 现在我被告知 我需要编写包装器以使每个 MFC 类在 L
  • 如何在使用 QSS 悬停父 QFrame 时设置子 QLabels 的颜色?

    我试图使用样式表设置 QFrame 内 2 个标签的悬停状态颜色 但无论是否存在实际悬停 框架都会采用悬停状态 See screenshot 我有一个带有 QLabels 的 QFrame 我将默认颜色设置为绿色和紫色 当我将鼠标悬停在 Q
  • 在 Mac 上启动没有停靠图标的 Qt 托盘进程

    我有一个包含 GUI 服务和托盘的捆绑包 请注意 它们是三个独立的过程 这可能听起来很奇怪 托盘是服务的代表 用户可以打开 GUI 如果没有托盘存在 它会创建一个托盘 所以在我的 GUI 代码中我有如下内容 QProcess startDe
  • 反转 PyQtGraph 中的 Y 轴

    我正在使用 Python 和 PyQt4 开发一个应用程序 该应用程序根据深度绘制不同的参数 绘图包是 PyQtGraph 因为它具有良好的动画速度特性 由于我正在根据深度进行绘图 因此我想反转 Y 轴 我发现我可以修改PyQtGraph文
  • 部署 Qt Quick 演示应用程序 Minehunt 时出现全白屏幕

    为了测试部署过程 我尝试部署附带的演示应用程序 Minehunt 我能够让它运行 没有崩溃或错误 但屏幕是全白的 我相信这通常意味着我缺少插件 Dependency walker 报告没有问题 我什至尝试包含 Qt MingW 插件目录中的
  • 如何完全删除 QLayout 的边距(特定于 Mac OS)

    Let me explain a simplified situation In Qt Creator create a QHBoxLayout containing a QPushButton and another QHBoxLayou
  • 为什么 RangeSlider 在 QtQuick 中可用,而不是作为标准 Widget

    我需要像范围滑块 具有两个用于设置最小 最大值的手柄的滑块 之类的东西 我注意到有一个RangeSlider在 QtQuick 和 QML 无论是什么 中 但没有 标准小部件 例如QRangeSlider 为什么是这样 我可以用那个吗Ran
  • 如何清除父Widget中的所有Widget?

    我正在使用构造函数QWidget QWidget parent 这个父窗口部件包含很多子窗口部件 我需要在运行时清除父级的所有子级小部件 我怎样才能做到这一点 之前的答案是错误的 你不能使用findChildren删除一个部件的子部件 因为
  • 为树视图创建 Qt 模型

    我正在用 Qt 使用 C 编写一个应用程序 我需要在树视图中表示一个对象结构 实现此目的的方法之一是为此创建一个模型 但在阅读有关该主题的 Qt 文档后我仍然很困惑 我的 结构 非常简单 有一个Project持有的物体Task中的对象std
  • 更改 Qt 中的标签

    我正在尝试制作一个由按钮和标签组成的简单程序 当按下按钮时 它应该将标签文本更改为程序内 QString 变量中的任何内容 到目前为止 这是我的代码 这是我的 widget h 文件 class Widget public QWidget
  • Qt for Android:无法签署应用程序的发布版本

    我正在使用 Qt 5 13 和 Qt Creator 4 9 2 我可以成功构建 Android 应用程序的调试版本 但是当我尝试编译发布版本时 我得到 16 57 35 过程 opt Qt 5 13 0 android armv7 bin
  • 创建 QT 应用程序作为 Windows 上现有基于控制台的应用程序的 GUI

    我正在尝试使用 Qt 为现有应用程序设置一个 GUI 该应用程序旨在在 Windows 命令行中运行 这不仅仅是运行应用程序system 命令 但我需要通过命令行与现有应用程序交互 The system 当我启动现有的可执行文件时 命令会阻
  • QSpinBox 具有用于十六进制输入的 Unsigned Int

    这里写了很多关于 QSpinBox 使用 int 作为其数据类型的限制的问题 人们通常希望显示更大的数字 就我而言 我希望能够以十六进制显示无符号 32 位整数 这意味着我希望我的范围为 0x0 0xFFFFFFFF 正常的 QSpinBo
  • 纹理openGl。 C++、qt

    我试图用草纹理覆盖我的地形 由高度图制成 但它没有按预期工作 我什至无法在简单的 GL QUAD 上获取纹理 结果是多色网络 void GLWidget initializeGL glEnable GL TEXTURE 2D 在 QGLwi
  • Qt同步QNetworkAccessManager获取

    执行同步 QNetworkAccessManager get 的正确方法是什么 The qt wiki http qt shoutwiki com wiki How to wait synchronously for a Signal in
  • Qt 5.4/Qml:防止绑定循环

    我有一个全局单例 设置 它保存应用程序设置 当我尝试运行以下代码时 我得到一个QML CheckBox Binding loop detected for property checked CheckBox checked Settings

随机推荐

  • 远程创建 Akka Actor,无需新的 ActorSystem

    我已经仔细阅读了文档好几次了 http doc akka io docs akka 2 1 4 scala remoting html http doc akka io docs akka 2 1 4 scala remoting html
  • 实体框架 4.0 GetChanges() 等效项

    在 LINQ to SQL 中 您可以重写 SubmitChanges 并使用 this GetChangeSet 方法来获取所有插入 更新和删除 以便您可以在将更改提交到数据库之前进行最后一刻的更改 这可以在 EF 4 0 中完成吗 我看
  • RethinkDB:​​RqlRuntimeError:无法对序列序列执行括号

    给定表格中的以下文档 id d30aa369 99d6 4a40 9547 2cbdf0bb069a locations alerts person 200 person 300 name home alerts person 200 pe
  • 不会更新目标组件,但 工作正常[重复]

    这个问题在这里已经有答案了 我在让 Ajax 正常工作时遇到问题 在我这里的 xhtml 文件中 我使用 Ajax 来呈现一些启用或禁用的输入 并且它工作正常 然而 更进一步 我还使用 Ajax 来渲染包含的 xhtml 文件 其中包含其他
  • 处理 GUI 中未处理的异常

    我主要是为精通技术的人编写一个小工具 例如由于这些工具通常是随着时间的推移而改进的快速黑客 我知道将会出现未处理的异常 并且用户不会介意 我希望用户能够向我发送回溯 以便我可以检查发生的情况并可能改进应用程序 我通常做 wxPython 编
  • Activiti 6.0.0 完成任务时无法获取表单属性

    我是 Activiti 6 0 0 的新手 我创建了一个包含用户任务的进程 第二个用户任务有两个表单属性 但是当我完成第一个用户任务并尝试完成第二个用户任务时 表单属性不显示 我无法完成用户任务 下面是我的 bpm 流程
  • 如何获取生成BIGINT类型sql的原则?

    在我的架构中 我有许多需要的字段BIGINT 我使用 Symfony 中的以下命令 symfony doctrine build sql 生成我的数据库 字段总是以类型的形式出现int 我在架构中尝试了以下类型 int type integ
  • 防止CSRF?

    我已经从这里看到了一些问题 stackoverflow 并且THIS http www codinghorror com blog 2008 10 preventing csrf and xsrf attacks html发帖了 但我还有一
  • 使用字符串分区键与整数分区键的 Hive/Impala 性能

    是否建议将数字列用作分区键 当我们对数字列分区和字符串列分区进行选择查询时 性能会有什么差异吗 好吧 如果你查阅 Impala 官方文档 就会有所不同 我不会详细说明 而是粘贴文档中的部分 因为我认为它说得很好 虽然使用 STRING 列作
  • 更新到 Angular 7 后出错。类型为“string | 的参数” ArrayBuffer' 不可分配给'string' 类型的参数

    我将我的项目从 Angular 6 升级到 Angular 7 我的项目中有一个文件上传组件 升级后会出现编译器错误 onUpload const fileReader new FileReader fileReader onload gt
  • is_account_page() 的 WooCommerce 条件,但仅限登录部分

    我需要测试用户是否在帐户页面上 但仅限于标题所述的登录部分 有没有办法做到这一点 可能你需要结合 is user logged in with is account page 这边走 if is user logged in is acco
  • 在哪里定义 topic.metadata.refresh.interval.ms?

    我正在对 kafka 进行一些测试 希望很快就能将其放入我的生产堆栈中 我正在使用这些文件kafka console producer sh and kafka console consumer sh测试kafka的功能 我创建了一个包含
  • 编写日志传送自动化脚本

    是否可以编写所有日志传送配置的脚本 例如 我需要编写一个作业 启动从服务器 A 到服务器 B 的两个数据库的日志传送 该作业将在服务器 A 上运行 顺便说一句 两者都是 SQL 2008 R2 Enterprise 服务器A上有一个共享 服
  • PyCharm:版本控制 .idea 文件夹,同时在开发人员之间保留不同的解释器

    我们使用 PyCharm 作为项目的 Python IDE 开发人员使用不同类型的操作系统设置 例如 python 路径对于我们中的某些人来说是不一样的 有些人将本地解释器存储在不同的位置或远程解释器 不幸的是 python解释器路径存储在
  • Scala:输入流到数组[字节]

    使用 Scala 从 InputStream 读取字节数组的最佳方法是什么 我可以看到您可以将 InputStream 转换为 char 数组 Source fromInputStream is toArray 怎么样 Stream con
  • 在 Clojure 中使用 WSDL

    我需要使用 WSDL Web 服务 而到目前为止我看到的 Java 客户端代码看起来臃肿且复杂 我想知道 Clojure 中是否存在更清晰的解决方案 以便我可以在 Clojure 中实现该部分并向 Java 代码公开更简单的 API cd
  • Firebase createCustomToken() 在本地模拟器中返回无效令牌

    我正在使用 firebase 身份验证来处理我的 Web 应用程序的用户帐户 当用户输入有效的登录凭据时 我使用 firebase admin SDK 在云函数中生成 JWT 该 JWT 被发送回客户端 然后使用 firebase 进行身份
  • matplotlib.rc 和 matplotlib.pyplot.rc 有什么区别?

    据我所知 在 matplotlib 中 您可以使用 rc 或 rcParams 来自定义绘图的样式 但是 这些函数似乎存在于两个级别 例如 matplotlib rc 与 matplotlib pyplot rc 或 matplotlib
  • 在 jQuery 中获取鼠标滚轮事件?

    有没有办法获取鼠标滚轮事件 不讲scroll事件 在 jQuery 中 document ready function foo bind mousewheel function e if e originalEvent wheelDelta
  • 如何使用QMake的子目录模板?

    我开始学习Qt 我即将离开 Visual Studio 世界 正在寻找一种使用 QMake 组织项目结构的方法 我找到了 子目录 模板 但我很难理解它 我的项目结构如下所示 project dir main cpp project pro