在.pro文件中,如果您要包含头文件(使用HEADERS
),C ++文件(使用SOURCES
)和Objective-C / Objective-C ++文件,那么事情就很简单(使用{ {1}}),但我不太清楚应该如何包含其他文件类型。
e.g。在查看Qt提供的各种示例时,QML文件应该是OBJECTIVE_SOURCES
,DISTFILES
还是包含在.qrc文件中(即OTHER_FILES
)存在不一致。 我把QML文件放在RESOURCES
文件中。
我的问题已经出现,因为我在.qrc文件中包含数据文件,例如音频.wav文件(也如Qt示例中所示;例如Qt Quick Demo - Maroon in Trouble)但这已经减慢了编译速度爬行。对于Windows上的MinGW,当它达到1GB时,它只会因内存不足而崩溃。必须有更好的方法来包含这些!
您能否提供何时使用指南:
qml.qrc
DISTFILES
OTHER_FILES
答案 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的使用情况:
您可以基本上将DISTFILES
或OTHER_FILES
用于其他文件。在QtCreator中,它作为其他文件出现在节点中。对于大多数开发者来说,这两个是可以交换的Qt示例是本地项目,因此它们既不需要资源也不需要两者,即您可以找到QML文件,例如OTHER_FILES
和RESOURCES
。
对于QML文件,您应该始终使用RESOURCES
,以确保它们在您的二进制文件中。
答案 2 :(得分:0)
说到 DISTFILES
,你可以自己试试。
假设您在 Windows 上使用 Qt。这是一个非常简单的qmake项目文件project.pro:
TEMPLATE = app
DISTFILES += "C:\Windows\explorer.exe"
qmake
它,您可以在生成的 Makefile.Debug 和 Makefile.Release 中找到以下语句:
DIST = C:\Windows\explorer.exe
...
dist:
$(ZIP) project.zip $(SOURCES) $(DIST) project.pro
...
target dist
是 standard targets 之一。我是从makefile - What is the difference between make and make dist? - Stack Overflow那里学来的。