首页 > 解决方案 > .pro 文件中的 DEPLOYMENTFOLDERS 设置不起作用

问题描述

我正在创建一个 QML Qt5 项目,并希望在单击构建时自动将我的 qml 文件复制到构建文件夹中。我编辑了我的 .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中的说明工作

标签: qtqml

解决方案


事实证明 .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
}
}

推荐阅读