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

时间:2016-06-29 14:08:51

标签: qt

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

e.g。在查看Qt提供的各种示例时,QML文件应该是OBJECTIVE_SOURCESDISTFILES还是包含在.qrc文件中(即OTHER_FILES)存在不一致。 我把QML文件放在RESOURCES文件中。

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

您能否提供何时使用指南:

  • qml.qrc
  • DISTFILES
  • OTHER_FILES

3 个答案:

答案 0 :(得分:11)

引用qmake manual

<强>资源

  

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

<强> DISTFILES

  

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

<强> OTHER_FILES

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

至于您的示例,您可以考虑按原样发送文件,而不是将它们包含在任何资源文件中,因为它们是compiled into the binary

您还可以查看compiling external resources and using them的大文件,以保持Qt资源系统的简单性。

答案 1 :(得分:2)

  • DISTFILES:在大多数情况下你不会使用unix的特殊内容。来自文档:
  

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

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

关于QML的使用情况:
您可以基本上将DISTFILESOTHER_FILES用于其他文件。在QtCreator中,它作为其他文件出现在节点中。对于大多数开发者来说,这两个是可以交换的Qt示例是本地项目,因此它们既不需要资源也不需要两者,即您可以找到QML文件,例如OTHER_FILESRESOURCES

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

答案 2 :(得分:0)

说到 DISTFILES ,你可以自己试试。

假设您在 Windows 上使用 Qt。这是一个非常简单的qmake项目文件project.pro

TEMPLATE = app

DISTFILES += "C:\Windows\explorer.exe"

qmake 它,您可以在生成的 Makefile.DebugMakefile.Release 中找到以下语句:

DIST          = C:\Windows\explorer.exe

...

dist:
    $(ZIP) project.zip $(SOURCES) $(DIST) project.pro
    ...

target diststandard targets 之一。我是从makefile - What is the difference between make and make dist? - Stack Overflow那里学来的。