首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qbs:模块可以安装文件吗?

Qbs:模块可以安装文件吗?
EN

Stack Overflow用户
提问于 2017-03-21 22:41:07
回答 1查看 310关注 0票数 0

我希望有一个模块,它将导出所有需要的依赖项,如路径、库路径和安装所需的运行时库。

代码语言:javascript
复制
Module {
    Depends { name: "cpp" }
    property path libLocation: ""
    cpp.dynamicLibraries: [
        "mylib"
    ]
    cpp.staticLibraries: [
        "mylib"
    ]
    cpp.includePaths: [
        libLocation + "include/",
    ]
    cpp.libraryPaths: [
        libLocation + "lib/",
    ]
    Group {
        name: "runtime libraries"
        qbs.install: true
        prefix: 'lib_location/'
        files: ["*.dll"]
    }
}

一切正常,但没有安装文件。有可能这样做吗?

更新1

正确安装了文件

  • 如果直接指定完整路径或相对路径(以文本形式)
  • 通过使用Project的属性。

工作解决方案:

代码语言:javascript
复制
Module {
    ...
    Group {
        name: "runtime libraries"
        prefix: "D:/Projects/MyProject/Dependencies/SDL2pp/mingw/bin/" // works!
        //prefix: project.dependenciesPath + "SDL2pp/mingw/bin/" // also works!

        files: "*.dll"
        qbs.install: true
    }
}

但是当我试图使用Module的属性时,它会说:“引用错误:找不到变量:.”

代码语言:javascript
复制
Module {
    ...
    property bool installDlls: true
    property string libPath:  ""
    Group {
        name: "runtime libraries"
        prefix: libPath // Can't find variable
        files: "*.dll"
        qbs.install: installDlls // Can't find variable
    }
}

此外,如果FileInfo模块用于构建路径,则不起作用。在“组”路径之外,已对其进行了核心解析。

代码语言:javascript
复制
import qbs
import qbs.FileInfo

Module {
    ...
    Group {
        name: "runtime libraries"
        prefix: FileInfo.joinPaths(project.dependenciesPaths, './SDL2pp/mingw/bin/') // silently not works
        files: "*.dll"
        qbs.install: true
    }
}

结论

我找到了两种解决方案:

  • 以文字形式编码的路径。不可携带的溶液
  • 使用Project的属性。可移植,但取决于项目项目。

我不知道为什么Module的属性不能在一个组中使用。有什么限制吗?还是它是个bug?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-19 08:09:52

虽然晚了,但发现这篇文章也想做同样的事情,也许它能帮助到其他人。发现在组中使用模块的属性可以通过给模块一个id并使用id引用属性来完成

Module { id: mymodule ... property bool installDlls: true property string libPath: "" Group { name: "runtime libraries" prefix: mymodule.libPath files: "*.dll" qbs.install: mymodule.installDlls } }

我使用Qbs 1.12.1

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42939537

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档