代码之家  ›  专栏  ›  技术社区  ›  Houss_gc

从一个qbs项目设置另一个qbs项目中声明的属性

qbs
  •  0
  • Houss_gc  · 技术社区  · 7 年前

    我有一个典型的应用程序开发场景,一个库+应用程序,都是qbs项目。

    Project { // the library
    
        property bool staticBuild: true
    
        Product {
            type: staticBuild ? "staticlibrary" : "dynamiclibrary"
            name: "Lib"
        }
    }
    

    在应用程序项目中,我使用dependens项添加Lib作为依赖项,如下所示:

    Project { // Application
    
        Product {
            type: "application"
            Depends { name: "Lib" }
            Lib.staticBuild: false // want to link to a dll.
        }
    }
    

    但是这个属性引用不起作用,我得到一个错误,告诉我该属性没有声明。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Christian Kandeler    7 年前

    首先,图书馆甚至没有这种财产;它的父项目可以。但即使它这样做了,它也不会从外部可见,更不用说可设置了。请记住,库只存在一次,但可能存在许多依赖关系。因此,如果您想决定如何构建库,您需要在更高的级别上进行决策,这两种产品都从中获取信息。这可以是一个常见的父项目(通常是顶级项目),也可以是两个产品都引入的特定于项目的模块。主要的一点是,决策是在一个中心位置作出的。