设置一个 属性 在一个 qbs 项目中声明的另一个项目
Set a property declared in one qbs project from another
我有一个典型的应用开发场景,一个库+应用,都是qbs项目。
在库项目中,我声明了一个布尔值 属性 staticBuild 默认为 true,如下所示:
Project { // the library
property bool staticBuild: true
Product {
type: staticBuild ? "staticlibrary" : "dynamiclibrary"
name: "Lib"
}
}
在应用程序项目中,我使用 Depends 项将 Lib 添加为依赖项,如下所示:
Project { // Application
Product {
type: "application"
Depends { name: "Lib" }
Lib.staticBuild: false // want to link to a dll.
}
}
但是这个 属性 引用不起作用,我收到错误消息,告诉我 属性 没有声明。
我该如何解决这个问题?
首先,图书馆连那个都没有属性;它的父项目确实如此。但即使它这样做了,它也不会从外面可见,更不用说设置了。请记住,库只存在一次,但可能有很多依赖项。因此,如果您想决定图书馆的构建方式,您需要在更高的层次上进行,这两种产品都从中获取信息。这可能是一个共同的父项目(通常是顶级项目),或者是两个产品都引入的特定于项目的模块。要点是决策是在一个中心位置做出的。
我有一个典型的应用开发场景,一个库+应用,都是qbs项目。 在库项目中,我声明了一个布尔值 属性 staticBuild 默认为 true,如下所示:
Project { // the library
property bool staticBuild: true
Product {
type: staticBuild ? "staticlibrary" : "dynamiclibrary"
name: "Lib"
}
}
在应用程序项目中,我使用 Depends 项将 Lib 添加为依赖项,如下所示:
Project { // Application
Product {
type: "application"
Depends { name: "Lib" }
Lib.staticBuild: false // want to link to a dll.
}
}
但是这个 属性 引用不起作用,我收到错误消息,告诉我 属性 没有声明。
我该如何解决这个问题?
首先,图书馆连那个都没有属性;它的父项目确实如此。但即使它这样做了,它也不会从外面可见,更不用说设置了。请记住,库只存在一次,但可能有很多依赖项。因此,如果您想决定图书馆的构建方式,您需要在更高的层次上进行,这两种产品都从中获取信息。这可能是一个共同的父项目(通常是顶级项目),或者是两个产品都引入的特定于项目的模块。要点是决策是在一个中心位置做出的。