2

Qbs 非常简单和酷的东西。但是,请帮助我了解一些 qbs 技术。

1)想象我有一些来源的目录。使用 qmake,我可以在该目录中创建包含内容的“include.pri”文件:

INCLUDEPATH += $$PWD
DEPENDPATH += $$PWD

HEADERS +=  $$PWD/my_file.h
SOURCES +=  $$PWD/my_file.cpp

然后将它(和许多其他公司文件)包含到任何项目中

include (some_path/include.pri)

在 。专业 (.pri) 文件

qbs 的类似物是什么?

我知道模块项目,但是我想要包含的任何目录都需要放入“模块”目录中。这是我的主要项目所需要的,它可以通过qbsSearchPaths看到。而且用“模块”包装每个目录将有些不便。

2)如果那时我想在这个源目录的基础上制作静态库,使用 qmake 我可以将公共头文件和 lib 文件安装到某个外部目录,可从任何其他项目获得。但是我可以用 qbs 做到这一点吗?我已经得出结论Groupinstall仅提供相对于构建目录的路径,而不提供一些抽象(绝对)路径。如果是这样,它的原因是什么?

4

1 回答 1

2

1) 根据您的具体要求,您有两种可能的解决方案。第一个是将 .pri 文件的内容转换为静态库:

StaticLibrary {
    name: "helper_lib"
    Depends { name: "cpp" }
    files: ["myfile.cpp", "myfile.h"]
    Export {
        Depends { name: "cpp" }
        cpp.includePaths: path
    }
}

然后在需要其功能的任何地方添加对此库的依赖项:

CppApplication {
    name: "myapp"
    Depends { name: "helper_lib" }
}

如果源代码从它们被拉入的任何地方都以相同的方式编译,那么这是最明智的方法。

第二种方式是从 Group 项继承:

Group { // top-level item in file mylibgroup.qbs
    prefix: path + "/"
    files: ["mylib.cpp", "mylib.h"]
}

像这样使用它:

import "mylibgroup.qbs" as MyLibGroup
CppApplication {
    MyLibGroup { }
}

但请注意,在这种情况下,必须在导入产品中设置包含路径,除非它们只应用于组中的文件。

2) qbs.installDir 指向“安装根目录”内,您可以将其打包,例如打包到 tar.gz 存档或其他文件中。对于直接安装到本地系统,您可以将安装根目录设置为系统的根目录。例如:

$ qbs build --no-install qbs.installRoot:/
$ sudo qbs install
于 2018-05-22T11:38:40.367 回答