我想要一个模块,它将导出所有必需的依赖项,如包含路径,库路径,并将安装所需的运行时库。
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
}
}
结论
我找到了2个solutuins:
我不知道为什么Module的属性不能在Group内部使用。是否有一些限制或它是一个错误?
答案 0 :(得分:1)
但后来发现这篇文章试图做同样的事情,也许对其他人有帮助。 发现可以通过为模块赋予一个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