我试图在qbs 1.5.1,Qt 5.6.1,Qt Creator 4.0.1生成的项目中使用几个库
我目前有几个关于qt建筑套装的问题。
第一个问题:如何重用属性字符串?例如,我尝试定义一个包含一些字符串属性的Product,并尝试在项目的其他位置重用这些属性。
// defines the qbs file in subfolder settings/settings.qbs
import qbs
Product
{
name: 'config'
property string p1 : 'path1' // <- define p1
property string p2: p1 + '/path2' // <- define p2
}
并尝试使用属性:
我。将settings.qbs添加到root project.qbs
import qbs
import qbs.File
Project{
references:{
...,
"settings/settings.qbs"
}
}
II。在另一个持有应用程序的文件夹中
// application/app.qbs
import qbs
CppApplication{
type: "application"
name: "myapp"
Depends {name: "cpp"}
Depends {name: "config"}
cpp.libraryPaths [config.p1, config.p2] // <- use p1 and p2 in a different qbs file
}
但是当我跑步时
qbs debug
在存储库根目录中,属性字符串值为'undefined'。
第二个问题是相对路径。似乎我可以在文件中使用相对路径:[],但是当我在cpp.dynamicLibraries或cpp.staticLibraries中使用相对路径时,编译器无法根据相对路径找到库。但如果我使用绝对路径,它就可以工作。我错过了什么吗?
感谢您的帮助:)
融
答案 0 :(得分:1)
您无法引用此类属性。您需要使用QML继承或导入JavaScript文件。例如,您可以将JS代码放入单独的.js文件中,然后导入它们。
---helpers.js---
function planetsCorrectlyAligned()
{
// implementation
}
---myproject.qbs---
import qbs 1.0
import "helpers.js" as Helpers
Product {
name: "myproject"
Group {
condition: Helpers.planetsCorrectlyAligned()
file: "magic_hack.cpp"
}
// ...
}
此语法详见Qbs文档:https://doc.qt.io/qbs/language-introduction.html#reusing-project-file-code
我没有在其他地方回答图书馆问题吗?另外,请不要在同一篇文章中添加多个问题;这不是Stack Overflow的工作原理。