从 qmake 迁移到 qbs,.pri 文件的类似物和安装技术

Migrating from qmake to qbs, Analogs for .pri file and install technics

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

1) 假设我有一些来源的目录。使用 qmake 我可以在该目录中创建 "include.pri" 文件,内容为:

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

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

然后将它(以及许多其他 inc 字段)包含到任何只写

的项目中
include (some_path/include.pri)

在 .pro (.pri) 文件.

qbs 的模拟是什么?

我知道 Module 项,但是我想包含的任何目录都需要放入 "modules" 目录.这是我的主要项目的需要,它可以通过 qbsSearchPaths 看到。用 "modules" 包装每个目录会有些不方便。

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

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 点在 "install root" 内,你可以将其打包,例如进入 tar.gz 存档或其他任何内容。对于直接安装到本地系统,您可以将安装根设置为系统的根目录。例如:

$ qbs build --no-install qbs.installRoot:/
$ sudo qbs install