第一步:获取源码
clone Qt5代码
$ git clone git://code.qt.io/qt/qt5.git
or (if you’re behind a firewall and want to use the https protocol):
$ git clone https://code.qt.io/qt/qt5.git
$ cd qt5
$ git checkout 5.15
参考:https://wiki.qt.io/Building_Qt_5_from_Git#Getting_the_source_code
第二步: 获取模块源码
perl init-repository -f --module-subset=default,-qtwebengine(移除web模块)
第三步(可以跳过):编译帮助文档需要
$ export LLVM_INSTALL_DIR=/usr/llvm
第四步:配置编译参数生产makefile文件
$ cd qt5
$ …/configure -prefix /Users/Qt/Qt/5.15_macosx_build -debug-and-release -opensource -qt-sqlite -qt-zlib -qt-libpng -qt-libjpeg -nomake tests -no-compile-examples -nomake examples -no-framework -skip qtwebengine -mp
#支持编译webview 音视频编解码(proprietary-codecs)
-webengine-proprietary-codecs
第五步:编译
$ make -j4
$ make install
备注:如果编译缺少openssl ,png等brew install lib***安装依赖库。
附:
源码编译configure参数:
configure meta:
-help,-h …显示此帮助屏幕
-verbose,-v …在配置期间输出详细消息
-continue…尽管有错误仍然继续配置
-redo …用以前使用的选项重新配置。其他选项可能会通过,但不会保存以供-redo稍后使用。
-recheck …放弃缓存的负配置测试结果。安装缺失的依赖关系后使用它。
-recheck-all …放弃所有缓存的配置测试结果。
-feature- <特征> …启用<特征>
-no-feature- 禁用 [none]
-list-features …列出可用功能。请注意一些功能也有专用的命令行选项。
-list-libraries …列出可能的外部依赖关系。
Build options:
-opensource …构建Qt的开源版本
-commercial …构建Qt的商业版
-confirm-license …自动确认许可证
-release…关闭调试版本的Qt [yes]
-debug …打开调试生成Qt [no]
-debug-and-release …构建两个版本的Qt,包含和不包含打开调试[是](仅适用于Apple和Windows)
-optimize-debug …在调试版本中启用调试友好的优化[自动](MSVC不支持)
-optimize-size …优化发布版本的大小而不是速度[no]
-optimized-tools …甚至在调试版本中构建优化的主机工具[no]
-force-debug-info …为发布版本创建符号文件[no]
-separate-debug-info。分离调试信息以分离文件[no]
-strip …释放不需要的符号的二进制文件[是]
-force-asserts …即使在发布版本中启用Q_ASSERT [no]
-developer-build …编译并链接Qt以开发Qt本身(用于自动测试的出口,额外检查等)[no]
-shared…建立共享的Qt库[是](不适用于UIKit)
-static …构建静态Qt库[no](对于UIKit是)
-framework …构建Qt框架包[是](仅限Apple)
-platform …选择主机mkspec [检测到]
-xplatform …交叉编译时选择target mkspec [PLATFORM]
-device …交叉编译设备
-device-option <key = value> …为设备mkspec添加选项
-appstore-compliant …禁用平台应用商店中不允许使用的代码。默认情况下,默认情况下,默认情况下,平台需要通过默认应用商店进行分发,特别是Android,iOS,tvOS,watchOS和Universal Windows Platform。 [汽车]
-qtnamespace …将所有Qt库代码封装在’namespace {…}'中。
-qtlibinfix 将所有libQt5 * .so重命名为libQt5 * .so。
-testcocoon …带有TestCocoon代码覆盖工具的仪器[no]
-gcov …具有GCov代码覆盖工具的仪器[no]
-sanitize {address | thread | memory | undefined}仪器与指定的编译器消毒剂。
-c ++ std …选择C ++标准 [c ++ 1z / c ++ 14 / c ++ 11](不支持MSVC)
-sse2 …使用SSE2指令[自动]
-sse3 / -ssse3 / -sse4.1 / -sse4.2 / -avx / -avx2 / -avx512启用特定的x86指令[auto]启用的仍然受到运行时检测。
-mips_dsp / -mips_dspr2使用MIPS DSP / rev2指令[auto]
-qreal … typedef qreal到指定的类型。 [双]注意:这会影响二进制兼容性。
-R …为Qt添加一个显式的运行时库路径库。支持相对于LIBDIR的路径。
-rpath …使用库链接Qt库和可执行文件将路径安装为运行时库路径。如同-R LIBDIR。在苹果平台上,禁用这意味着使用绝对安装名称(基于 LIBDIR)动态库和框架。 [汽车]减少输出…减少输出符号的数量[自动]
-reuce-relocations …减少重定位量[auto](仅适用于Unix)
-plugin-manifests …将清单嵌入插件[no](仅限Windows)
-static-runtime …使用-static,使用静态运行时[no](仅限Windows)
-pch …使用预编译头文件[auto]
-ltcg …使用链接时间码生成[no]
-use-gold-linker …使用GNU gold链接器[auto]
-incredibuild-xge …使用IncrediBuild XGE [no](仅限Windows)
-ccache …使用ccache编译器缓存[no](仅适用于Unix)
-make-tool …使用构建qmake [nmake](仅适用于Windows)
-mp …使用多个处理器进行编译(仅限MSVC)
-warnings-are-errors。将警告视为错误[no; yes如果-developer-build]
-silent …减少构建输出以便发出警告和错误可以更容易地看到
Build environment:
-sysroot
-gcc-sysroot …使用-sysroot,将编译器通过–sysroot [yes]
-pkg-config …使用pkg-config [auto](仅适用于Unix)
-D …传递附加的预处理器定义
-I …传递额外的包含路径
-L …传递额外的库路径
-F …传递额外的框架路径(仅适用于Apple)
-sdk …使用Apple提供的SDK 构建Qt。争论应该是以下列出的可用SDK之一’xcodebuild -showsdks’。请注意,该参数仅适用于Qt库和使用目标mkspec构建的应用程序 - 不是主机工具,如qmake,moc,rcc等。
-android-sdk path …设置Android SDK根路径[$ ANDROID_SDK_ROOT]
-android-ndk路径…设置Android NDK根路径[$ ANDROID_NDK_ROOT]
-android-ndk-platform设置Android平台
-android-ndk-host …设置Android NDK主机(linux-x86,linux-x86_64等)[$ ANDROID_NDK_HOST]
-android-arch …设置Android体系结构(armeabi,armeabi-v7a,arm64-v8a,x86,x86_64,mips,mips64)
-android-toolchain-version …设置Android工具链版本
-android-style-assets自动从设备中提取样式资产运行。此选项使Android样式表现良好正确的,但也使得Android平台插件与LGPL2.1不兼容。 [是]
Component selection:
-skip …从构建中排除整个存储库。
-make …将添加到要构建的零件列表中。指定此选项将首先清除默认列表。[库和例子,如果不是交叉构建也是工具,还测试是否 -
开发人员构建]
-nomake …从要构建的零件列表中排除。
-compile-examples …未设置时,只安装示例的源代码[是]
-gui …构建Qt GUI模块和依赖[yes]
-widgets …编译Qt Widgets模块和依赖[yes]
-no-dbus …不要构建Qt D-Bus模块[Android和Windows默认]
-dbus-linked …构建Qt D-Bus并链接到libdbus-1 [auto]
-dbus-runtime …构建Qt D-Bus并动态加载libdbus-1 [no]
-accessibility…启用可访问性支持[是]注意:不建议禁用可访问性。
-qml-debug …启用QML调试支持[yes]
Qt附带一些第三方库的捆绑副本。这些被使用默认情况下,如果自动检测相应的系统库失败。
Core options:
-doubleconversion …选择使用的双转换库[system / qt / no]没有暗示使用sscanf_l和snprintf_l(不精确)。
-glib …启用Glib支持[no;在Unix上自动]
-eventfd …启用eventfd支持
-inotify …启用inotify支持
-iconv …启用iconv(3)支持[posix / sun / gnu / no](仅适用于Unix)
-icu …启用ICU支持[自动]
-pcre …选择使用的libpcre2 [system / qt]
-pps …启用PPS支持[自动](仅限QNX)
-zlib …选择用过的zlib [system / qt]
Logging backends:
-Journald …启用日志支持[no](仅限Unix)
-syslog …启用syslog支持[no](仅适用于Unix)
-slog2 …启用slog2支持[自动](仅限QNX)
Network options:
-ssl …启用SSL支持方法[自动]
-no-openssl …不要使用OpenSSL [Apple和WinRT上的默认]
-openssl-linked …使用OpenSSL并链接到libssl [no]
-openssl-runtime …使用OpenSSL并动态加载libssl [auto]
-securetransport …使用SecureTransport [auto](仅限Apple)
-sctp …启用SCTP支持[no]
-libproxy …启用libproxy的使用[no]
-system-proxies …默认使用系统网络代理[yes]
Gui, printing, widget options:
-cups …启用CUPS支持[自动](仅适用于Unix)
-fontconfig …启用Fontconfig支持[auto](仅适用于Unix)
-freetype …选择使用的FreeType [system / qt / no]
-harfbuzz …选择用过的HarfBuzz-NG [系统/ qt / no](不在Apple和Windows上自动检测)
-gtk …启用GTK平台主题支持[auto]
-lgmon …启用lgmon支持[自动](仅限QNX)
-no-opengl …禁用OpenGL支持
-opengl …启用OpenGL支持。支持的API:es2(在Windows上默认),桌面(在Unix上默认),动态(仅限Windows)
-opengles3 …启用OpenGL ES 3.x支持而不是ES 2.x [自动]
-angle …使用捆绑的ANGLE支持OpenGL ES 2.0 [自动](仅限Windows)
-combined-angle-lib …将LibEGL和LibGLESv2合并到LibANGLE(仅限Windows)
-qpa …选择默认的QPA后端(例如,xcb,cocoa,windows)
-xcb-xlib …启用Xcb-Xlib支持[auto]
Platform backends:
-direct2d …启用Direct2D支持[自动](仅限Windows)
-directfb …启用DirectFB支持[no](仅适用于Unix)
-eglfs …启用EGLFS支持[auto;没有在Android和Windows上]
-gbm …为GBM [auto]启用后端(仅限Linux)
-kms …启用KMS [auto]的后端(仅适用于Linux)
-linuxfb …启用Linux Framebuffer支持[auto](仅限Linux)
-mirclient …启用Mir客户端支持[no](仅Linux)
-xcb …选择使用的xcb- *库[system / qt / no](-qt-xcb仍然使用libxcb本身的系统版本)
Input backends:
-evdev …启用evdev支持[auto]
-imf …启用IMF支持[自动](仅限QNX)
-libinput …启用libinput支持[auto]
-mtdev …启用mtdev支持[auto]
-tslib …启用tslib支持[自动]
-xinput2 …启用XInput2支持[自动]
-xkbcommon-x11 …选择与xcb结合使用的xkbcommon[系统/ QT / NO]
-xkb-config-root
-xkbcommon-evdev …启用X-less xkbcommon与libinput结合使用[汽车]
Image formats:
-gif …启用对GIF的读取支持[自动]
-ico …启用对ICO的支持[是]
-libpng …选择用过的libpng [system / qt / no]
-libjpeg …选择使用的libjpeg [system / qt / no]
Database options:
-sql- …启用SQL <驱动程序>插件。支持的驱动db2 ibase mysql oci odbc psql sqlite2 sqlite tds[全自动]
-sqlite …选择用过的sqlite3 [系统/ qt]
Qt3D options:
-assimp …选择使用的assimp库[system / qt / no]
-qt3d-profile-jobs …启用作业分析[no]
-qt3d-profile-gl …启用OpenGL分析[no]
-qt3d-simd …选择SIMD支持级别[no / sse2 / avx2]
-qt3d-render …启用Qt3D渲染方面[是]
-qt3d-input …启用Qt3D输入方面[是]
-qt3d-logic …启用Qt3D逻辑方面[是]
-qt3d-extras …启用Qt3D Extras方面[yes]
-qt3d-animation …启用Qt3D动画方面[是]
Multimedia options:
-pulseaudio …启用PulseAudio支持[自动](仅适用于Unix)
-alsa …启用ALSA支持[自动](仅适用于Unix)
-no-gstreamer …禁用对GStreamer的支持
-gstreamer [版本]。启用GStreamer支持[自动]在没有参数的情况下,首先尝试1.0,然后再尝试0.10。
-mediaplayer-backend <名称> …选择媒体播放器后端(仅限Windows)支持的后端:directshow(默认),wmf
Webengine options:
-webengine-alsa …启用ALSA支持[自动](仅限Linux)
-webengine-pulseaudio …启用PulseAudio支持[自动](仅限Linux)
-webengine-embedded-build …启用Linux嵌入式构建[auto](仅限Linux)
-webengine-icu …使用系统ICU库[system / qt](仅限Linux)
-webengine -ffmpeg …使用系统FFmpeg库[system / qt](仅限Linux)
-webengine-opus …使用系统Opus库[system / qt](仅限Linux)
-webengine-webp …使用系统WebP库[system / qt](仅限Linux)
-webengine-pepper-plugins …启用Pepper Flash和Widevine插件[自动]
-webengine-printing-and-pdf …启用打印和输出到PDF[汽车]
-webengine-proprietary-codecs …启用对专有编解码器的支持[no]
-webengine-spellchecker …启用对拼写检查程序的支持[是]
-webengine-native-spellchecker。启用对原生拼写检查器的支持[否](仅限macOS)
-webengine-webrtc …启用对WebRTC的支持[自动]
原文链接:https://blog.csdn.net/qq_36685978/article/details/79474928