问题描述
CppApplication 和 DynamicLibrary 这两个项目如何重用基础产品项目中定义的属性?我似乎继承是一个解决方案,但检查 https://doc.qt.io/qbs/language-introduction.html#reusing-project-file-code 它没有帮助。 我想要这样的东西:
// common.qbs ------------------------------------
Product
{
Properties {
condition: qbs.toolchain.contains("clang")
cpp.defines: ["COMPILER_CLANG"]
}
Properties {
condition: qbs.toolchain.contains("gcc")
cpp.defines: ["COMPILER_GCC"]
}
Group {
name: "Common files"
files: [
"common.cpp","common.hpp",]
}
}
// project.qbs ------------------------------------
import "common.qbs" as Common
// app.qbs
CppApplication <inherits> Common
{
cpp.defines: outer.concat("APP")
}
// dll.qbs
DynamicLibray <inherits> Common
{
cpp.defines: outer.concat("DLL")
}
解决方法
没有多重继承,所以基本上你有两种选择:要么在两个产品都知道的项目中声明属性(例如顶级项目),要么使用项目特定的模块。