12

因此据称,Qt 的配置工具经历了一些更改,这对于能够进行更精简的 Qt 构建(也称为“Qt Lite”)是必要的。但是,似乎没有任何关于如何使用该功能的文档,或者至少我没有找到任何文档,并且查看发布公告中的评论,其他人也不能。

更重要的是,从我过去几年一直使用的配置在很多方面都失败的事实来看,这些变化肯定是存在的。我不确定内置帮助的最新程度,因为我上次尝试使用它作为指导,结果发现它在很大程度上已经过时并且包含不再支持的选项。

因此,如果有人能阐明发生了什么变化、如何变化以及如何为“Lite”构建配置,那就太好了。尤其是在模块和功能依赖方面,因为我认为我们都希望避免浪费时间构建将开始构建的构建,尽管配置不正确,忽略了必要的依赖关系,只是为了让它不可避免地失败并且只会浪费时间。

4

3 回答 3

6

根据更改日志:

  • 配置系统几乎从头开始重写。这提高了 Unix 和 Windows 上的构建之间的一致性,但一些细微的意外行为更改也是可能的。此外,一些过时的选项已被完全删除,现在会导致错误。
  • 不再允许在任何地方手动#define QT_NO_。相反,必须使用 configure 的 -no-feature-* 选项。请注意,这不适用于定义哪些修改行为而不是完全删除功能。
  • -no-feature-* 选项系列与配置系统的其余部分集成在一起。许多现有功能成为可选功能,并修复了各种简化配置中的构建问题。这是一项被称为“Qt Lite”的持续努力。

列表的功能-no-feature-*qtbase\src\corelib\global\qfeatures.txt.

默认情况下启用所有功能。

更多信息可以在Qt Lite Overview Presentation及其幻灯片中找到。

您还可以使用称为 Qt 配置工具的新 UI 工具,它是 Qt for Embedded Devices 软件包的一部分 - 请参阅其文档。该配置工具目前仅适用于商业 Qt 客户(Qt 5.8)。

于 2017-01-24T03:07:11.417 回答
3

我失败的配置背后的变化:

  • 不再有指定sql支持是内置还是插件的选项,所以格式现在只是-sql-<driver>,文档仍然没有更新并列出旧格式 - -<option>-sql-<driver>

  • -l添加特定库的选项已被删除,这在多个领域都存在问题

编辑:此外,刚刚发布的关于进行 lite 构建的这篇博文可能很有用。

于 2017-01-31T16:03:59.880 回答
2

描述新配置系统所理解的所有内容都在configure.json分散在 Qt 模块周围的文件中给出。该configure工具使用这些文件来构建它理解的命令行参数列表。

在不使用其他工具的情况下,要了解 Qt 功能,您需要检查这些 json 文件并选择您希望打开或关闭的功能/选项。

子配置

这些充当包含,并引用给configure.json定文件夹中的文件。例如qtbase/configure.json包括qtbase/src/corelib/configure.jsonqtbase/src/network/configure.json

"subconfigs": [
    "src/corelib",
    "src/network",
    [...]
],

显式命令行选项

commandline/options值列出了configure给定 Qt 模块可以理解的选项。这些选项与特征系统是分开的,尽管它们可以用来方便地提供控制特征的速记别名。例如,在 中qtbase/configure.json,我们有:

{ "commandline": { "options": { "accessibility": "boolean", [...] }

此命令行选项控制同名accessibility功能。使用起来比处理特征系统的选项更方便[-no]-feature-accessibility。以下对具有相同的效果:

  • -accessibility或者-feature-accessibility
  • -no-accessibility或者-no-feature-accessibility

价值观:

  • boolean选项分别赋予configureas-option-no-option,含义truefalse
  • 所有其他选项均以-option value.

功能选项

features值列出了给定模块中可用的功能。这些特征实际上是布尔值。它们都是默认启用的,但需要通过启用它们的配置测试。

要控制功能foo

  • -no-feature-foo禁用该功能。例如,要禁用该iconv功能,你会这样做configure -no-feature-iconv [...]
  • -feature-foo启用该功能并确保它可用。如果功能的配置测试失败,这将导致错误。它在与您的应用程序一起构建特别配置的 Qt 的构建系统中很有用:它确保您的代码所依赖的功能可用。

失败的构建

一般来说,无论您提供哪种功能选择组合,如果configure没有失败,则构建应该成功。

尽管配置不正确,我们都希望避免将时间浪费在将开始构建的构建上

configure工具将检测任何无效配置。如果configure成功但构建失败,这是一个 Qt 错误,您应该报告它。

于 2017-02-27T16:22:57.297 回答