设置一个 属性 在一个 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.
    }
}

但是这个 属性 引用不起作用,我收到错误消息,告诉我 属性 没有声明。

我该如何解决这个问题?

首先,图书馆连那个都没有属性;它的父项目确实如此。但即使它这样做了,它也不会从外面可见,更不用说设置了。请记住,库只存在一次,但可能有很多依赖项。因此,如果您想决定图书馆的构建方式,您需要在更高的层次上进行,这两种产品都从中获取信息。这可能是一个共同的父项目(通常是顶级项目),或者是两个产品都引入的特定于项目的模块。要点是决策是在一个中心位置做出的。