在Qt中,何时应该使用RESOURCES与DISTFILES和OTHER_FILES

Pau*_*one 12 qt

在.pro文件中,如果您包含头文件(使用HEADERS),C++文件(使用SOURCES)和Objective-C/Objective-C++文件(使用OBJECTIVE_SOURCES),事情就会很简单,但我不太清楚其他文件类型应该如何包括在内.

例如在看Qt所提供的各种例子,是关于QML文件是否应进行不一致DISTFILES,OTHER_FILES或.qrc文件(即在包含RESOURCES).我把QML文件放在一个qml.qrc文件中了.

我的问题出现了,因为我在.qrc文件中包含数据文件,例如音频.wav文件(也如Qt示例中所示;例如Qt快速演示 - 麻烦中的麻烦),但这已经减慢了编译速度.对于Windows上的MinGW,当它达到1GB时,它只会因内存不足而崩溃.必须有更好的方法来包含这些!

你能提供一个关于何时使用的指南:

  • DISTFILES
  • OTHER_FILES
  • RESOURCES

max*_*xik 12

引自qmake手册:

资源

指定目标的资源集合文件(qrc)的名称.[...]

DISTFILES

指定要包含在dist目标中的文件列表.UnixMake规范仅支持此功能.[...]

其他文件

事实上这似乎没有记载,至少我找不到任何东西.据我所知,此处列出的所有文件仅在项目资源管理器(例如Qt Creator)中链接,并且不受qmake的任何处理.


至于您的示例,您可以考虑按原样发送文件,而不是将它们包含在任何资源文件中,因为它们被编译为二进制文件.

您还可以查看编译外部资源并将其用于大型文件,以保持Qt资源系统的简单性.


Fel*_*lix 6

  • DISTFILES:对于 unix 来说,一些特殊的东西在大多数情况下你不会使用。来自文档:

指定要包含在 dist 目标中的文件列表。此功能仅受 UnixMake 规范支持。

  • OTHER_FILES:文件,是项目的一部分,但不是“构建”的一部分。这可以是自述文件、构建提示或任何其他不属于任何其他类别的内容
  • RESOURCES: .qrc-文件,将被编译到应用程序中。

关于这三个与 QML 的用法:
您基本上可以将DISTFILES或用作OTHER_FILES其他文件。在 QtCreator 中,它与其他文件一样出现在节点中。对于大多数开发人员来说,这两者是可以互换的。Qt 示例是本地项目,因此它们不需要资源或两者都有,即您可以在例如OTHER_FILES和中找到 QML 文件RESOURCES

对于 QML 文件,您应该始终使用RESOURCES, 以确保它们位于您的二进制文件中。