组项:无法将文件安装到同一位置

时间:2016-08-16 10:01:32

标签: qbs

在我的项目中,我有几个插件,具体取决于单个模块,包含一个Group项类似于:

Group {
    name: "group"
    qbs.install: true
    qbs.installDir: "../"
    files: <filename>
}

但是编译失败了&#34;错误:无法安装文件&#39; filename &#39;和&#39; 文件名&#39;到同一地点&#39; 位置&#39;&#34;。基本上,qbs不能将同一个文件复制到同一个位置两次(对我来说似乎不合逻辑)

如何解决此错误或是否有任何优雅的解决方法?

2 个答案:

答案 0 :(得分:1)

这是qbs.installSourceBase财产的工作。基本上,您将此设置为包含组中文件的基本目录,Qbs将根据相对于上述基本目录的路径,将列出的文件分层安装到qbs.installDir

例如,给定以下组:

// defined in /source/myproject/myproject.qbs
Group {
    qbs.install: true
    qbs.installDir: "share/stuff"
    qbs.installSourceBase: "." // relative to /source/myproject
    files: [
        "fileA.txt",
        "fileB.txt",
        "subdir/fileB.txt",
    ]
}

以及以下命令行调用:

$ qbs [...] --install-root /sample/some-root

将产生以下文件系统层次结构:

/sample/some-root/share/stuff/fileA.txt
/sample/some-root/share/stuff/fileB.txt
/sample/some-root/share/stuff/subdir/fileB.txt

有关详细信息,请参阅Qbs Installation Properties文档。

答案 1 :(得分:0)

有一种解决方法,可能需要对项目进行一些重组:

而不是:

Module {
    name: "somemodule"

    // module properties set to dependant products

    Group {
        // files to install
        qbs.install: true
    }
}

我们可以使用:

Product {
    name: "somemodule"

    Group {
        // files to install
        qbs.install: true
    }

    Export { 
        // module properties set to dependant products
    }
}

这样,只有在运行mymodule的步骤时才会安装一次文件,从而消除了冲突。通过Export项导出的模块属性与通过Module导出的模块属性一样。

限制:

  1. Product必须添加到references商品的Project
  2. Modules不能依赖Product项,这可能需要将所有相关模块重组为Project / Export