Qbs非常容易和酷的东西。但是,请帮助我理解一些qbs技术。
1)想象一下,我有一些来源的dir。使用qmake,我可以在该目录中创建“include.pri”文件,内容为:
INCLUDEPATH += $$PWD
DEPENDPATH += $$PWD
HEADERS += $$PWD/my_file.h
SOURCES += $$PWD/my_file.cpp
然后将它(以及许多其他公司包括在内)写入
的任何项目include (some_path/include.pri)
in。 pro(.pri)file 。
qbs的类比是什么?
我知道模块项目,但是我想要包含的任何目录我需要输入“modules”目录。我需要使用 qbsSearchPaths 来查看我的主项目。 “modules”包装每个目录将是一些不合适的。
2)如果那时我想在这个来源的基础上制作静态库, 使用qmake我可以将公共头文件和lib文件安装到某个外部目录,可以从任何其他项目中获得。 但我可以用qbs做到这一点吗?我得出的结论是组。 install 仅提供相对于构建目录的路径,而不是一些抽象(绝对)路径。如果是这样,它的原因是什么?
答案 0 :(得分:1)
1)根据您的具体要求,您可以在此处找到两种可能的解决方案。第一个是将.pri文件的内容转换为静态库:
StaticLibrary {
name: "helper_lib"
Depends { name: "cpp" }
files: ["myfile.cpp", "myfile.h"]
Export {
Depends { name: "cpp" }
cpp.includePaths: path
}
}
然后在需要其功能的地方添加对此lib的依赖:
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指向"安装root",你可以打包,例如到tar.gz档案或其他什么。要直接安装到本地系统,可以将安装根目录设置为系统的根目录。例如:
$ qbs build --no-install qbs.installRoot:/
$ sudo qbs install