从源代码构建 Qt 时,我可以制作或不制作哪些部分?
我下载了
qt-everywhere-src-5.12.7.ta​​r.xz
,其中包含一个 README,内容为:
See output of `./configure -help' for documentation on various options to configure.
该输出包括以下内容:
Component selection:
-make <part> ......... Add <part> to the list of parts to be built.
Specifying this option clears the default list first.
[libs and examples, also tools if not cross-building,
also tests if -developer-build]
-nomake <part> ....... Exclude <part> from the list of parts to be built.
-
如何找到可以用作
part
的名称?
从 如何将 Qt 编译为静态 ,我可以看到一些选项是
-nomake demos -nomake tools
-
那么
-no-webkit -no-script
呢,这与-nomake-webkit 相同吗-nomake-script
?
我尝试了以下操作并收到与
-no-webkit
相关的错误:
$ ./configure -prefix $PWD/qtbase -opensource -release -no-webkit -no-script -no-scripttools -no-qt3support -nomake demos -nomake tools -nomake examples
+ cd qtbase
+ /home/user/Downloads/qt/qt-everywhere-src-5.12.7/qtbase/configure -top-level -prefix /home/user/Downloads/qt/qt-everywhere-src-5.12.7/qtbase -opensource -release -no-webkit -no-script -no-scripttools -no-qt3support -nomake demos -nomake tools -nomake examples
Creating qmake...
............................................................................................Done.
Info: creating super cache file /home/user/Downloads/qt/qt-everywhere-src-5.12.7/.qmake.super
Info: creating cache file /home/user/Downloads/qt/qt-everywhere-src-5.12.7/.qmake.cache
ERROR: Unknown command line option '-no-webkit'.
Qt 6 现在在 configure --help 输出中明确说明了允许的值。 您可以在 qtbase 存储库的 config_help.txt 文件中找到它。确保您拥有 Qt 6 版本的源代码 - 扩展的 Qt 6 源代码 tarball 或签出到 6.x 分支或标签的 git 模块。以下是值:
-make <part> ......... Add <part> to the list of parts to be built.
Specifying this option clears the default list first.
(allowed values: libs, tools, examples, tests,
benchmarks, manual-tests, minimal-static-tests)
[default: libs and examples, also tools if not
cross-building, also tests if -developer-build]
对于 Qt 5,您可以在 qtbase git 模块目录底部的 configure.json 中看到可接受的值。确保您拥有 Qt 5 版本的源代码 - 扩展的 Qt 5 源代码 tarball 或签出到 5.x 分支或标签的 git 模块。以下是值:
"make": { "type": "addString", "values": [ "examples", "libs", "tests", "tools" ] },
-no-feature
标志
您还可以使用标志
-no-feature-<feature>
禁用某些功能,例如 webengine(新版 Qt 中 webkit 的新名称)。执行
configure -list-features
可提供可使用此标志启用/禁用的功能的完整列表。
因此,例如,如果我想禁用对动画图像的支持,我可以使用以下标志:
-no-feature-movie
-nomake
标志
您也可以将其与
-make/-nomake
标志结合使用。
configure -help
显示这些标志的可能选项(部分):
-make <part> ... 将 <part> 添加到要构建的部分列表中。指定此选项会先清除默认列表。
(允许的值:libs、tools、examples、tests、benchmarks、manual-tests、minimal-static-tests)
[默认:libs 和 examples,如果不是交叉构建则还包括工具,如果是 -developer-build 则还包括测试]
-nomake <part> ....... 排除 <part>从要构建的部分列表中。
因此,例如,如果我想排除示例的构建,我会添加以下标志:
-nomake examples
-skip
标志
最后,您还可以使用
-skip <repo>[,<repo>]
标志(其他可用排列,请查看
config_help.txt
)完全跳过构建子模块。
例如,要排除 Qt Wayland Compositor,请使用以下标志:
-skip qtwayland
有关更多信息关于静态编译 Qt 6.*,请参考 Qt 文档 。
结论
那么,使用
-no-feature
、
-nomake
和
-skip
之间有什么区别,使用这些标志之间具体有哪些优势呢?
-no-feature
:此标志用于禁用 Qt 模块内的特定功能(可选组件)。通过使用此标志,您可以排除某些功能而不进行构建,如果您不需要这些功能,这对于减少最终构建的大小很有用。
-nomake
:此标志用于完全跳过构建某些组件或工具,方法是将特定的 Qt 模块/工具从构建过程中完全排除,这有助于减少总体构建时间和大小。
-skip
:此标志类似于 -nomake,但它专门用于 Qt 源代码树中,以在配置阶段跳过构建某些模块或组件,并接受更广泛的参数。
希望这能有所帮助!(抱歉迟到了 3 年哈哈)
https://doc.qt.io/qbs/qt-modules.html
axcontainer
axserver
concurrent
core
dbus
declarative
designer
enginio
gui
help
multimedia
multimediawidgets
network
opengl
phonon
printsupport
quick
quickcontrols2
qml
qmltest
script
scxml
sql
svg
testlib
webkit
webkitwidgets
widgets
xml
xmlpatterns