我希望有一个模块,它将导出所有需要的依赖项,如路径、库路径和安装所需的运行时库。
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
正确安装了文件:
工作解决方案:
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的属性时,它会说:“引用错误:找不到变量:.”
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模块用于构建路径,则不起作用。在“组”路径之外,已对其进行了核心解析。
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
}
}结论
我找到了两种解决方案:
我不知道为什么Module的属性不能在一个组中使用。有什么限制吗?还是它是个bug?
发布于 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
https://stackoverflow.com/questions/42939537
复制相似问题