【问题标题】:DEPLOYMENTFOLDERS setting in .pro file not working.pro 文件中的 DEPLOYMENTFOLDERS 设置不起作用
【发布时间】:2020-12-21 03:53:22
【问题描述】:

我正在创建一个 QML Qt5 项目,并希望在单击 build 时自动将我的 qml 文件复制到 build 文件夹中。我编辑了我的 .pro 文件以包括:

  qmlFolder.source = qml
  qmlFolder.target = .
  DEPLOYMENTFOLDERS += qmlFolder
  message("adding qml folder")

我的项目源文件夹结构是:

|
+-- build
+-- source
    |
    +--main.cpp
    |
    +--qml
        |
        +---main.qml

因此,当我单击构建时,我在编译输出选项卡(在 Qt 创建器中)中看到“添加 qml 文件夹”消息,因此我知道 make 正在读取 .pro 文件。但是构建文件夹缺少任何 qml 文件。而且我没有看到任何复制消息或构建输出的错误消息。

为什么我的 DEPLOYMENTFOLDERS 语句不起作用? (我在 Linux 下编译以防万一)

DEPLOYMENTFOLDERS 指令没有很好的文档记录,但应该按照SO question 中的说明工作

【问题讨论】:

  • 您能否提供指向DEPLOYMENTFOLDERS 文档的链接?我找不到有关此参数的任何信息。
  • 那不是本地定义的变量吗,看Qt forum
  • 这是 Qt 项目文件的“未记录”功能。它通常被 Qt 项目使用 - 但由于缺乏文档而受到很多批评

标签: qt qml


【解决方案1】:

事实证明 .pro 功能实际上在 deployment.pri 文件中可用(我未能包含该文件)。一旦包含,并将 qtcAddDeployment 行添加到 .pro 文件中,该功能就会按预期工作。

.pri 文件的重要部分是:

defineTest(qtcAddDeployment) {
for(deploymentfolder, DEPLOYMENTFOLDERS) {
    item = item$${deploymentfolder}
    greaterThan(QT_MAJOR_VERSION, 4) {
        itemsources = $${item}.files
    } else {
        itemsources = $${item}.sources
    }
    $$itemsources = $$eval($${deploymentfolder}.source)
    itempath = $${item}.path
    $$itempath= $$eval($${deploymentfolder}.target)
    export($$itemsources)
    export($$itempath)
    DEPLOYMENT += $$item
}
}

【讨论】:

  • 我相信某些版本的 Qt Creator 会在您创建新项目时生成此代码。所以DEPLOYMENTFOLDERS 实际上并不是qmake 的一个特性,而是有人写的一个方便的函数来帮助完成一个常见的任务。顺便说一句,qtcAddDeployment 的定义不必在它自己的 .pri 文件中。如果您有一个包含多个 .pro 文件且所有人都可能想要使用此功能的大型项目,这将很有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-20
  • 2020-12-26
  • 2023-01-30
  • 1970-01-01
相关资源
最近更新 更多