0

我有一个典型的应用开发场景,一个库+应用,都是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.
    }
}

但是此属性引用不起作用,我收到错误消息,告诉我该属性未声明。

我该如何解决这个问题?

4

1 回答 1

0

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

于 2017-07-25T11:38:54.607 回答