QT5.13.0 的./configure参数解释(最新版本)

一般来说大家就照着现有的参数复制上去,改下安装目录就行了。虽然有大量的配置选项和参数,但如果不是真的了解和需要接触的库/特性,都用不上。看一下大概的用法,以后有需要想起来或许有这个东西有用就行。

标红色的参数,我认为是比较常用的参数,在编译不同平台版本,裁剪等。需要多多了解。


用法:配置[选项][分配]
Usage:  configure [options] [assignments]

Configure理解变量赋值,比如命令行上的VAR=value。
每个大写的库名(可通过-list-libraries获得)支持_INCDIR、_LIBDIR、_PREFIX (INCDIR=PREFIX/include、LIBDIR=PREFIX/lib)、_LIBS和- on Windows和Darwin - _LIBS_DEBUG和_LIBS_RELEASE后缀。
例如,ICU_PREFIX=/opt/icu42 ICU_LIBS="-licui18n -licuuc -licudata"。

也可以操作任何QMAKE_*变量,修改mkspec中Qt构建本身的值,例如QMAKE_CXXFLAGS+=-g3。

注意,*_LIBS*和QMAKE_*赋值操作列表,因此需要根据qmake规则引用包含元字符(特别是空格)的项。
最重要的是,整个工作需要根据shell规则引用。建议内部引用使用单引号,外部引用使用双引号。


顶级安装目录:
configure options assignments
-prefix 部署目录如,目标设备上所示。[默认/usr/local/Qt-$QT_VERSION;如果加上选项-developer-build,在 qtbase 构建目录 ]
-extprefix 安装目录,如主机上所示。[默认SYSROOT/PREFIX]
-hostprefix [dir] 在主机上运行的构建工具的安装目录。如果没有给出[dir],则使用当前构建目录。[EXTPREFIX]
-external-hostbindir 为这台机器构建的Qt工具的路径。当-platform与当前系统不匹配时,则使用 Canadian 交叉编译。

下面的选项安装目录布局的细调。注意,所有目录除了-sysconfdir应该

位于-prefix/-hostprefix:

configure options assignments
-bindir 可执行文件目录 [PREFIX/bin]
-headerdir 头文件目录 [PREFIX/include]
-libdir 库文件目录 [PREFIX/lib]
-archdatadir Arch 依赖的数据目录 [PREFIX]
-plugindir 插件目录 [ARCHDATADIR/plugins]
-libexecdir 辅助程序目录 [在windows默认ARCHDATADIR/bin ,其他情况下 ARCHDATADIR/libexec ]
-importdir QML1 imports模块目录 [ARCHDATADIR/imports]
-qmldir QML2 imports模块目录 [ARCHDATADIR/qml]
-datadir Arch 独立的数据目录 [PREFIX]
-docdir 文件目录 [DATADIR/doc]
-translationdir Translations [DATADIR/translations]
-sysconfdir  Qt 程序的设置目录 [PREFIX/etc/xdg]
-examplesdir 例子程序目录 [PREFIX/examples]
-testsdir 测试文件目录 [PREFIX/tests]
-hostbindir 主机可执行文件目录 [HOSTPREFIX/bin]
-hostlibdir 主库库文件目录[HOSTPREFIX/lib]
-hostdatadir qmake的数据目录[HOSTPREFIX]

其余选项的约定:当一个选项的描述后面跟着一个括号内的值列表时,解释如下:
“yes”代表最基本的选择;所有其他值都可能是该选项的前缀,例如-no-gui。还可以分配值,例如--gui=yes。
如果没有指定值,则按对应的顺序尝试列出值;“auto”是“yes/no”的缩写。单独的“yes”和“no”表示值列表
没有自动选择。

配置选项:

configure options assignments
-help -h 显示帮助文档
-verbose -v 打印详细的配置消息
-continue   尽管有错误,仍然继续 configure
-redo   重新配置以前使用的选项。可以传递其他选项,但以后使用不会保存 -redo选项。
-recheck [test,...] 丢弃缓存的负配置测试结果。安装丢失的依赖项后使用。或者,如果指定了测试,则只丢弃它们的结果。
-recheck-all   丢弃所有缓存的配置测试结果。
-feature - 启动
-no-feature - 禁止 [none]用于包含和排除特性。可用的都被罗列在qtbase/src/corelib/global/qfeatures.txt文件中。
                         比如,要禁用accessibility特性,可用使用-no-feature-accessibility选项,如下所示:./configure -no-feature-accessibility
 -list-features   列出可用功能特性。注意,有些特性还有专用的命令行选项。
-list-libraries   列出可能的外部依赖项。

构建选项:

configure options assignments
-opensource   构建Qt的开源版本
-commercial   构建Qt的商业版本
-confirm-license   自动确认许可
-release   构建Qt的release版本(关闭调制) [yes]
-debug   构建Qt的debug(开启调试)[no]
-debug-and-release   构建两个版本的Qt [yes] (只适用于apple 和 window)
-optimize-debug   在调试构建中启动调试友好的优化 [auto] (不支持 MSVC 和Clang工具链)
-optimize-size   优化release版本的大小而不是速度 [no]
-optimize-tools   构建优化的主机工具,即使在 debug版本中 [no]
-force-debug-info   为 release 版本构建符号文件 [no]
-separate-debug-info   将调试信息分离到单独的文件中 【no】
-gdb-index   索引调试信息以加速GDB 【no;auto 如果加上-developer-build 选项】
-strip   去掉 release 版本不需要的二进制符号文件【yes】
-gc-binaries    将每个函数或数据项放入自己的节(section)中,并启动链接器收集未使用的节(section)【auto (静态编译),no (其他情况下)】
-force-asserts   在 release 版本使用 Q_ASSERT 【no】
-developer-build   编译并链接Qt以开发Qt本身 (导出用于自动测试、额外检查等)【no】
-shared  

构建 Qt 共享库 【yes】 (no for UIKit)

-static   构建 Qt 静态库 【no】 (yes for UIKit)
-framework   构建 Qt 框架包 【yes】 (Apple only)
-platform  选择主机的编译器与系统(可见源码/qtbase/mkspecs) 【detected】
-xplatform 在交叉编译时,选择目标的编译器与系统 【paltform】同上
-device 指定交叉编译时的目标设备或芯片 (可见源码/qtbase/mkspecs/devices)
-device-option 为目标设备添加额外的qmake参数
-appstore-compliant   禁用平台应用商店中不允许的代码。对于需要通过应用商店分发的平台,特别时Android、iOS、tvOS、watchOS和通用Windows平台,这是默认打开的
-qtnamespace 把所有 Qt 库代码封装在 ‘namespace {...} ’
-qtlibinfix 把所有libQt5*.so 动态库名字改为 libQt5*.so
-testcocoon   使用TestCocoon代码覆盖工具进行测试 【no】
-gcov   使用GCov代码覆盖工具测试 【no】
-trace 【backend】 使用仪器的跟踪点(tracepoints),目前支持的后端时‘etw’ (Windows)和‘lttng’ (Linux),或 ‘yes’ 用于自动检测。
-sanitize {address | thread | memory
 underfined }
使用指定的编译器杀毒工具。注意,有些杀毒程序不能组合使用;例如,-sanitize address 不能与 -sanitize thread 组合使用
-coverage {trace-pc-guard} 添加代码覆盖工具(Clang only)
-c++std 选择c++标准 [c++2a /c++17 /c++14 /c++11] 不支持 MSVC 2015
-sse2   使用SSE2说明 【auto】
-sse3/-ssse3/sse4.1/-sse4.2/-avx/-avx2/-avx512  

支持使用特定的x86 【auto】启用的仍然会收到运行检测的管理

-mips_dsp/-mips——dspr2   使用MIPS DSP/rev2指令 【auto】
-qreal 

将qreal 类型定义为指定的类型。(double) 注意:这回影响二进制兼容性
-R  向 Qt 库添加显式运行时库路径。支持相对于LIBDIR的路径。
-rpath   使用库安装路径作为运行时的库路径来链接Qt库和可执行文件。类似于-R LIBDIR。在Apple平台上上,禁用它意味着对动态库和框架使用绝对安装名称(基于LIBDIR) 【auto】
-reduce-exports   减少输出符号的数量 【auto】
-reduce-relocations   减少重定位段的数量 【auto】(Unix only)
-plugin-manifests   将屏幕嵌入到插件中 【no】 (Windows only)
-static-runtime   对于-static,使用静态运行 【no】 (Windows only)
-pch   使用预编译头【auto】
-ltcg   使用链接时间代码生成【no】
-linker 【bfd,gold,lld】 强制使用GNU ld、GNU gold 或 LLVM / LLD链接器代替默认的(GCC only)
-incredibuild-xge   使用 IncrediBuild XGE 【no】(Windows only)(分布式编译工具?)
-ccache   使用ccache编译器缓存【no】(Unix only)
-make-tool 使用来建立 qmake 【nmake】(Windows only)
-mp    使用多个处理器进行编译 (MSVC only)
-warnings-are-errors   将警告视为错误 【no;yes 如果添加选项 -developer-build】
-silent   减少构建输出,以便更容易地看到警告和错误

构建环境 :

configure options assignments
-sysroot 设置目标sysroot为
-gcc-sysroot   使用选项-sysroot,将 - - sysroot传递编译器 【yes】
-pkg-config   使用pkg-config 【auto】(Unix only)
-D 传递额外的预处理器定义
-I (大写i) 传递额外的头文件路径
-L 传递额外的库文件路径
-F 传递额外的框架路径(Apple only)
-sdk 使用苹果提供的SDK构建Qt。参数应该是“xcodebuild -showsdks”列出的可用sdk之一。注意,这个参数只适用于使用目标mkspec构建的Qt库和应用程序,而不是像qmake、moc、rcc等主机工具
-android-sdk path   设置 Android SDK 根目录 【$ANDROID_SDK_ROOT】
-android-ndk path   设置 Android NDK 根目录 【$ANDROID_NDK_ROOT】
-android-ndk-host   设置Android NDK主机 (linux-x86,linux-x86_64,etc.) 【$ANDROID_NDK_HOST】
-android-arch   设置 Android 体系架构(armeabi,armeabi-v7a,arm64-v8a,x86,x86_64)
-android-toolchain-version   设置Android 工具链的版本
-android-style-assets   在运行时自动从设备中提取样式表。这个选项使Android 风格的行为正确,但也使Android平台插件与LGPL2.1不兼容,【yes】

configure options assignments
-skip 从构建中排除整个存储库,(去除某个模块,参考源代码根目录)
-make

添加到要构建的部件列表中。指定此选项将首先清除默认列表。【可选 libs、tools、examples、demos、docs、translations】

【libs、tools、example如果不是交叉编译构建,还有tests,在加上选项 -developer-build】

-nomake 从要构建的部件列表总排除
-compile-examples   取消设置时,只安装示例的源代码 【no on WebAssembly,otherwise,yes】
-gui   构建Qt GUI模块和依赖项【yes】
-widgets   构建Qt Widgets模块和依赖项【yes】
-no-dbus   不构建Qt D-Bus模块 【default on Android and Windows】
-dbus-linked   构建Qt D-Bus并链接到 libdbus-1 【auto】
-dbus-runtime   构建Qt D-Bus并动态加载 libdbus-1 【no】
-accessibility   启用可访问性支持【yes】 注意:不建议禁用可访问性

Qt附带了一些第三方库的捆绑拷贝。如果各自系统库的自动检测失,则使用默认的。

核心选项:

configure options assignments
-doubleconversion   选择使用double conversion库(双精度转换?)【system/qt/no】
-glib   启动 Glib 支持 【no;auto on Unix】
-eventfd   启用 eventfd 支持
-inotify   启用 inotify 支持
-iconv   启用 iconv(3)支持 【posix/sun/gnu/no】(Unix only)
-icu   启用 ICU 支持 【auto】
-pcre   选择使用 libpcre2 【system/qt】
-pps   启用 PPS 支持 【auto】(QNX only)
-zlib   选择使用 zlib 【system/qt】

日志后端:

configure options assignments
-journald   启用 journald 支持 【no】(Unix only)
-syslog   启用 syslog 支持 【no】(Unix only)
-slog2   启用 slog2 支持 【auto】(QNX only)

网络选项:

configure options assignments
-ssl   启用所有SSL支持方法【auto】
-no-openssl   不适用OpenSSL (default on Apple and WinRT)
-openssl-linked   使用 OpenSSL 和链接到 libssl 【no】
-openssl-runtime   使用OpenSSL 和动态加载 libssl 【auto】
-securetransport   使用安全传输【auto】
-sctp   启用 SCTP 支持 【no】
-libproxy   启用 libproxy 【no】
-system-proxies   默认使用系统网络代理 【yes】

Gui, 打印, widget 选项:

configure options assignments
-cups   启用 CUPS 支持(打印)【auto】(Unix only)
-fontconfig   启用 Fontconfig 支持 (字体库) 【auto】 (Unix only)
-freetype   选择使用 FreeType(字体库) 【system / qt / no】
-harfbuzz   选择使用 HarfBuzz-NG (字体库)【system / qt / no】
-gtk   启用 GTK 平台支持主题 (GUI) auto
-lgmon   启用 lgmon 支持 【auto】 (QNX only)
-no-opengl   禁用 OpenGL 支持
-opengl 启用 OpenGL 支持,支持的APIs:es2 (default on Windows),desktop (default on Unix),dynamic (Windwos only)
-opengles3   启用 OpenGL ES 3.x 支持代替 ES 2.x 【auto】
-angle   使用绑定的角度来支持 OpenGL ES 2.0 【auto】(Windows only)
-combined-angle-lib   将 LibEGL 和 LibGLESv2 合并到 LibANGLE (Windows only)
-qpa  选择默认 QPA 后端 (s)(e.g,xcb,cocoa,windows)用逗号分开的优先列表
-xcb-xlib   启用 Xcb-Xlib 支持 【auto】

平台后端:

configure options assignments
-direct2d   启用 Direct2D 支持【auto】(Windows only)
-directfb   启用 DirectFB 支持【no】(Unix only)
-eglfs   启用 EGLFS 支持 【auto;no on Android and Windows】

-gbm

  启用 backends for GBM 【auto】 (Linux only)
-kms   启用 backends for KMS 【auto】 (Linux only)
-linuxfb   启用 Linux Framebuffer 支持 【auto】 (Linux only)
-mirclient   启用 Mir client 支持 【no】(Linux only)
-xcb   启用 X11 支持,选择使用 xcb-*库 【system / qt / no】(-qt-xcb 仍然使用 libxcb 本身的系统版本)

输入后端:

configure options assignments
-libudev   启用 udev 支持 【auto】
-evdev   启用 evdev 支持 【auto】
-imf   启用 IMF 支持【auto】 (QNX only)
-libinput   启用 libinput 支持 【auto】
-mtdev   启用 mtdev 支持 【auto】
-tslib   启用 tslib 支持 【auto】
-xcb-xinput   启用 XInput2 支持 【auto】
-xkbcommon   启用 key mapping 支持 【auto】

图片格式:

configure options assignments
-gif   启用对 GIF 的读取支持 【auto】
-ico   启用 ICO 支持 【yes】
-libpng   选择使用 libpng 【system / qt / no】
-libjpeg   选择使用 libjpeg 【system / qt /no】 

configure options assignments
-sql - 启用 SQL 插件,支持的驱动程序:db2、ibase、mysql、oci、odbc、psql、sqlite2、sqlite、tds 【all auto】
-sqlite   选择使用 sqlite3 【system / qt】

Qt3D 选项:

configure options assignments
-assimp   选择使用 assimp 库 【system / qt / no】
-qt3d-profile-jobs   启用 工作简介 【no】
-qt3d-profile-gl   启用 OpenGL简介 【no】
-qt3d-simd   选择 SIMD的支持级别 【no / sse2 / avx2】
-qt3d-render   启用 Qt3D 渲染部分 【yes】
-qt3d-input   启用 Qt3D 输入部分 【yes】
-qt3d-logic   启用 Qt3D 逻辑部分 【yes】
-qt3d-extras   启用 Qt3D 额外部分 【yes】
-qt3d-animation   启用 Qt3D 动画部分 【yes】

进一步的图像格式选项:

configure options assignments
-jasper   启用 JPEG-2000 支持是使用 JasPer 库【no】
-mng   启用 MNG 支持 【no】
-tiff   启用 TIFF 支持 【system / qt / no】
-webp   启用 WEBP 支持 【system / qt / no】

多媒体选项:

configure options assignments
-pulseaudio   启用 PulseAudio 支持 【auto】 (Unix only)
-alsa   启用 ALSA 支持 【auto】 (Unix only)
-no-gstreamer   禁用 GStreamer
-gstreamer 【version】 启用 GStreamer 支持 【auto】
-evr   禁用 EVR 在 DirectShow 和WMF 情况下 【auto】

Web引擎选项:

configure options assignments
-webengine-alsa   启用 ALSA 支持 【auto】 (Linux only)
-webengine-pulseaudio   启用 PulseAudio 支持 【auto】(Linux only)
-webengine-embedded-build   禁止构建 Linux embedded 【auto】(Linux only)
-webengine-icu   使用系统 ICU 库【system / qt】(Linux only)
-webengine-ffmpeg   使用系统 FFmpeg库 【system / qt】(Linux only)
-webengine-opus   使用系统 Opus库【system / qt】(Linux only)
-webengine-webp   使用系统 WebP库 【system / qt】(Linux only)
-webengine-pepper-plugins   启用 Pepper Flash and Widevine plugins 【auto】
-webengine-printing-and-pdf   启用 打印和输出到 PDF【auto】
-webengine-proprietary-codecs   启用对 proprietary codecs 的支持 【no】
-webengine-spellchecker   启用对 spellchecker 的支持 【yes】
-webengine-native-spellchecker   启用对 native spellchecker 的支持 【no】(macOS only)
-webengine-webrtc   启用对 WebRTC 的支持【auto】

 

你可能感兴趣的:(Qt,qt编译,configure参数)