0

我想为我的项目创建自动跨平台安装构建器。出于这个原因,我制作了这个文件 myprojectpackage.qbs:

Product {
   type: "mypackage"

   Depends { name: "myproject" } // <- this one has type "application"
   Depends { name: "applicationpackage" }
}

applicationpackage.qbs 使用一些子模块,看起来像:

Module {
   name: "applicationpackage"
   Depends { name: "qtlibsbinariespackage" }
   Depends { name: "3rdpartybinariespackage" }
   Depends { name: "resourcepackage" }
}

所有这些模块都试图找到一些东西并复制到包目录。完成后,我有一个包含便携式应用程序版本的文件夹。该组的每个模块都有典型的结构:

Module {
    name: "somepackage"

    Rule {
        condition: qbs.targetOS.contains("windows")
        multiplex: true
        alwaysRun: true
        inputsFromDependencies: ["application"]

        Artifact {
            filePath: "Copied_files.txt"
            fileTags: "mypackage"
        }

        prepare: {
            var cmdQt = new JavaScriptCommand()
            // prepare paths
            cmdQt.sourceCode = function() {
                // copy some files and write to Copied_files.txt
            }
            return [cmdQt]
        }
    }
}

便携式文件夹包完成后,我想制作一个 zip 档案。所以,我需要另一个模块,它将在包模块之后运行。我认为,这样做的唯一方法是将由应用程序包中的模块创建的 .txt 文件作为另一个规则的输入。

我尝试了很多东西(FileTaggers、outputFileTags 等),但没有一个能正常工作。那么有什么方法可以让模块像我想做的那样在管道中工作吗?

4

1 回答 1

0

我是否正确理解您想要将标记为“mypackage”的 txt 文件的内容“合并”到存档中,即所有文件中列出的所有内容都应该在那里结束?如果是这样,那么您只需要一个进行聚合的“顶级”规则。您现有的规则会将其输出标记为例如“mypackage.part”,然后多路复用规则会将这些作为输入并创建“mypackage”工件。请注意,存档模块 ( https://doc.qt.io/qbs/archiver-module.html ) 可以完成从聚合的 txt 文件为您创建包的最后一步。

于 2018-01-15T16:41:48.430 回答