zoukankan      html  css  js  c++  java
  • Qt 编译方式之 qbs

    QBS简介

    QBS(Qt Build Suite)同 qmake、cmake 之类一样都是构建工具。QBS 号称是下一代的构建工具(博主的理解上一代是基于 makefile 的构建工具)。根据官网介绍,Qbs 极有可能会替代 qmake 成为 Qt 6.0 的构建系统,与 qmake 相比,Qbs 提供了更快构建速度,以及更多的特性。

    和qmake不一样,qbs没有绑定Qt版本,它从项目文件的高级项目描述中生成一个正确的编译表(依赖表)。而传统的MakeFile生成工具比如qmake和CMake生成了makefile文件,然后将实际的命令留给make或者ninja这样的工具去执行。Qbs的另一方面就是充当了并行生成与直接调用编译器、连接器以及其他工具的角色,非常像SCons和Ant做的事情。

    Declarative语言

    我们创建一个最基础的程序来看下 qbs 如何构建项目:

     

    import qbs.FileInfo导入所需的文件信息
    QtApplication是应用的配置
    Depends { name: "Qt.widgets" }用来引入功能模块
    cpp.defines:[]程序的一些宏定义
    files:[]项目程序需要用到的一些文件
    install: true 是否安装某组文件
    installDir: qbs.targetOS.contains("qnx") ? FileInfo.joinPaths("/tmp", name, "bin") : base 设置安装目录

    qbs Property Documentation

      1. architecture : string
        目标平台的处理器体系结构。
        未定义表示目标平台独立于体系结构(例如clr或jvm),此属性通常在配置文件中设置。
        常用值为:“x86”、“x86_64”和“arm”,默认:未定义。

      2. architectures : stringList
        产品将为其构建的体系结构。
        默认值:Android上是[armv5te],与苹果平台上的xcode相同,否则等同于[qbs.architecture]。

      3. buildVariant : string
        构建模式的名称。
        可能的值是“debug”和“release”。如果 qbs.configurationname 为“release”,则默认为“release”,否则为“debug”。

      4. buildVariants : stringList
        构建模式的名称列表。
        默认值:相当于[qbs.buildvariant]。

      5. debugInformation : bool
        是否生成调试信息。
        默认值:对于调试版本为true,否则为false。

      6. enableDebugCode : bool
        是否在产品中启用调试功能。不要与生成调试符号或代码优化级别混淆。
        通常,此属性对 debug 启用,对 release 禁用。
        默认值:对于调试版本为true,否则为false。

      7. hostOS : stringList
        此属性由QBS内部设置,并指定OS QBS正在运行。
        此属性的可能值是TargetOS的值,即使其中某些值可能不受支持,默认:未定义。

      8. hostPlatform : string
        主机平台,注:不要使用此属性。
        默认:自动确定。

      9. install : bool
        是否安装某组文件。
        此属性通常设置在组项中,以将多个文件标记为可安装。
        注意:启用此属性的项目将自动接收文件标记“installable”。这对于编写与包装相关的规则很有用,默认值:false

      10. installDir : string
        产品或组文件的安装目录。
        此属性的值是相对于InstallPrefix的路径,默认:未定义

      11. installPrefix : string
        全局安装前缀。它隐式地预加在installdir的所有值之前。
        此属性本身的值在安装上下文中相对于InstallRoot,默认:[]

      12. installRoot : string
        全局安装根目录。
        在安装上下文中,它隐式地预加了installPrefix的所有值。
        注意:此属性与InstallDir和InstallPrefix有根本不同,因为它对正在构建的代码不可见。实际上,install根目录通常只是用于打包二进制文件的临时位置,因此不应假定它们在运行时位于该位置。出于同样的原因,通常不从项目文件中设置此属性。默认值:/install-root

      13. installSourceBase : string
        要安装的本地文件的基目录。
        从installdir中指定的目标目录路径中省略源基目录。
        默认:要安装的当前文件的目录,相对于产品的源目录。

      14. nullDevice : string
        与空设备对应的平台特定文件路径。
        默认值:在Windows上为“nul”,在Unix上为/dev/null。

      15. optimization : string
        所有工具链都应执行的一般优化类型。
        允许值为:
        “fast”
        “none”
        “small”
        默认值:调试版本为“none”,发布版本为“fast”。

      16. pathListSeparator : string
        环境变量或其他上下文中使用的路径列表的平台特定分隔符。
        在Windows上默认为“;”,在Unix上默认为“:”。

      17. profiles : stringList
        构建产品的配置文件。
        对于这里列出的每个概要文件,将根据各自概要文件中设置的属性构建一个产品实例。
        默认值:[project.profile]

      18. shellPath : path
        与命令行解释器对应的平台特定文件路径。
        在Windows上,这是保存在comspec环境变量(通常是c:/windows/system32/cmd.exe)中的cmd.exe的路径,在类Unix平台上,这是/bin/sh。
        默认值:Windows上"%COMSPEC%",Unix上“bin/sh”

      19. sysroot : string
        目标平台的sysroot。
        此属性通常设置在用于交叉编译的配置文件中。默认:未定义

      20. targetOS : stringList
        指定要为其生成项目的操作系统。
        使用此属性在条件中测试特定OS或OS系列。请勿为此目的使用TargetPlatform。
        可能的值包括“bsd”、“darwin”和“unix”中的一个或多个,以及targetform的可能值。
        默认:未定义

      21. targetPlatform : stringList
        要为其生成项目的操作系统。
        此属性通常设置在配置文件中或特定产品中,目标操作系统始终是已知的(例如以本机代码编写的Apple Watch应用程序)。通常应将此属性视为只写,并避免使用它来测试当前目标操作系统。
        可能的值包括以下一个或多个:

    "aix"
    "android"
    "freebsd"
    "haiku"
    "hpux"
    "hurd"
    "integrity"
    "ios"
    "ios-simulator"
    "linux"
    "lynx"
    "macos"
    "netbsd"
    "openbsd"
    "qnx"
    "solaris"
    "tvos"
    "tvos-simulator"
    "vxworks"
    "watchos"
    "watchos-simulator"
    "windows"
      1. toolchain : stringList
        工具链的属性用于构建。
        典型值包括“llvm”,以及toolchaintype的可能值。默认:未定义

      2. toolchainType : string
        工具链用于构建。
        通常应将此属性视为只写,并避免使用它来测试当前的工具链。
        典型值包括:“gcc”、“clang”、“mingw”、“msvc”和“xcode”。
        默认:自动确定。

      3. [read-only] configurationName : string
        当前生成配置的名称。
        构建配置是通过命令行参数config设置的。默认:“default”

      4. [read-only] hostOSBuildVersion : string
        主机操作系统的内部版本。
        目前,仅为Windows和Apple平台定义,默认:未定义
        在Windows上,这是4位或5位Windows内部版本号,相当于versionPatch。
        在苹果平台上,这是苹果版本控制方案中的标准版本号。例如,“13C64”。

      5. [read-only] hostOSVersion : string
        主机操作系统版本。
        目前,仅为Windows和Apple平台定义, 默认:未定义
        由两个或三个由点分隔的数字组成。例如,“10.9”或“6.3.9600”。

      6. [read-only] hostOSVersionParts : list
        主机操作系统版本列表。
        例如,Windows8.1(版本6.3.9600)对应的值为[6,3,9600],默认:[]

      7. [read-only] hostOSVersionMajor : int
        主机操作系统主版本。
        默认值:hostoVersionParts[0]

      8. [read-only] hostOSVersionMinor : int
        主机操作系统次版本。
        默认值:hostosVersionParts[1]

      9. [read-only] hostOSVersionPatch : int
        主机操作系统修补程序级别。
        默认值:hostosVersionParts[2]

      10. [read-only] version : string
        QBS版本号。例如,“1.4.1”。

      11. [read-only] versionMajor : int
        QBS的主要版本号。

      12. [read-only] versionMinor : int
        QBS的次要版本号。

      13. [read-only] versionPatch : int
        QBS的补丁版本号。

    Group QML Type

      1. condition : bool
        确定组中的文件是否实际视为项目的一部分。默认值:true

      2. excludeFiles : list
        从文件列表中减去的文件列表。使用通配符时很有用。默认:一个空的列表

      3. fileTags : list
        要附加到组文件的文件标记列表。然后可以用一个规则来匹配它们。
        注意:文件标记器从不应用于设置了此属性的文件。默认:一个空的列表

      4. fileTagsFilter : list
        要匹配的artifact.filetags列表。
        此组中设置的任何属性都将应用于产品的工件,其文件标记与此处列出的标记匹配。
        组的file tags属性指定的文件标记将添加到匹配的项目中。此属性与文件互斥。
        默认:一个空的列表

      5. files : list
        组中的文件。与FileTagsFilter互斥。
        使用包含组项的文件的父目录解析相对路径。但是,如果prefix属性设置为绝对路径,则该路径将成为基目录。默认:一个空的列表

      6. filesAreTargets : bool
        如果此属性为true且组位于模块中,则组中的文件将不会成为依赖于模块的产品的源工件。相反,它们被视为产品的目标工件。也就是说,它们将与依赖模块的产品中的规则的inputsFromDependencies文件标记列表相匹配。默认值:false

      7. name : string
        组的名称。不在内部使用;主要用于IDE。
        默认值:“Group x”,其中x是产品中所有组中的唯一数字。

      8. overrideTags : bool
        确定如何处理同时在产品(或父组,如果有)和组的顶级列出的文件上的标记。
        如果此属性为真,则通过组设置的文件标记将替换通过产品或父组设置的标记。如果为假,则将组标记添加到父标记中。如果设置了FileTagsFilter,则忽略此属性。默认值:true

      9. prefix : string
        用于预处理所有文件的字符串。允许斜杠并具有目录语义。
        默认值:父组的前缀(如果存在),否则为空。

  • 相关阅读:
    怎么用js实现jq的removeClass方法
    减少事件绑定次数
    JS setAttribute兼容
    css3常用动画+动画库
    小tip: transition与visibility
    image的srcset属性
    jqeury点击空白关闭弹窗
    卡片翻转效果
    div+css 圆角加阴影
    函数
  • 原文地址:https://www.cnblogs.com/navysummer/p/14240893.html
Copyright © 2011-2022 走看看