configure meta -help,-h ............显示此帮助屏幕 -verbose,-v .........在配置期间输出详细消息 -continue............尽管有错误仍然继续配置 -redo ................用以前使用的选项重新配置。其他选项可能会通过,但不会保存以供-redo稍后使用。 -recheck .............放弃缓存的负配置测试结果。安装缺失的依赖关系后使用它。 -recheck-all .........放弃所有缓存的配置测试结果。 -feature- <特征> ...启用<特征> -no-feature- <feature>禁用<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 <target> ...选择主机mkspec [检测到] -xplatform <target> ..交叉编译时选择target mkspec [PLATFORM] -device <name> .......交叉编译设备<name> -device-option <key = value> ...为设备mkspec添加选项 -appstore-compliant ..禁用平台应用商店中不允许使用的代码。默认情况下,默认情况下,默认情况下,平台需要通过默认应用商店进行分发,特别是Android,iOS,tvOS,watchOS和Universal Windows Platform。 [汽车] -qtnamespace <name> ..将所有Qt库代码封装在'namespace <name> {...}'中。 -qtlibinfix <infix>将所有libQt5 * .so重命名为libQt5 * <infix> .so。 -testcocoon ..........带有TestCocoon代码覆盖工具的仪器[no] -gcov ................具有GCov代码覆盖工具的仪器[no] -sanitize {address | thread | memory | undefined}仪器与指定的编译器消毒剂。 -c ++ std <edition> ....选择C ++标准<edition> [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 <type> ........ typedef qreal到指定的类型。 [双]注意:这会影响二进制兼容性。 -R <string> ..........为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 <tool> ....使用<tool>构建qmake [nmake](仅适用于Windows) -mp ..................使用多个处理器进行编译(仅限MSVC) -warnings-are-errors。将警告视为错误[no; yes如果-developer-build] -silent ..............减少构建输出以便发出警告和错误可以更容易地看到 Build environment -sysroot <dir> ....... 将<dir>设置为目标sysroot -gcc-sysroot ......... 使用-sysroot,将编译器通过--sysroot [yes] -pkg-config ..........使用pkg-config [auto](仅适用于Unix) -D <string> ..........传递附加的预处理器定义 -I <string> ..........传递额外的包含路径 -L <string> ..........传递额外的库路径 -F <string> ..........传递额外的框架路径(仅适用于Apple) -sdk <sdk> ...........使用Apple提供的SDK <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 <repo> .........从构建中排除整个存储库。 -make <part> .........将<part>添加到要构建的零件列表中。指定此选项将首先清除默认列表。[库和例子,如果不是交叉构建也是工具,还测试是否 - 开发人员构建] -nomake <part> .......从要构建的零件列表中排除<part>。 -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 <api> ........启用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 <name> ..........选择默认的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 <dir> ...使用-qt-xkbcommon-x11,设置默认的XKB配置根目录<dir> [检测] -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- <driver> ........启用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的支持[自动...
包含 Qt 标签的文章
Qt 5.15.0 静态编译
配置环境 下载源码 http://download.qt.io/archive/qt/5.15/5.15.0/single/ 下载 zip 包(下载过 tar.xz 包,在 Windows 上用 7zip 解压后竟然缺少文件,而且还没有错误提示) 编译前需要安装:Perl、Python、Ruby 并确保他们的可执行路径在 Path 变量中。 Python 要安装 2.7.5 及以后的 2.7 版本,python3 是不行的。用于编译 QtWebEngine Python2.7.x 装好后把路径 C:\Python27 添加到 path,把可执行程序 python.exe 重命名为 python2.exe 安装 clang,生成 Qt 文档要用。 下载 jom https://wiki.qt.io/Jom 替代 nmake,可支持多核编译,加快编译速度。 msvc2019 版 打开 VS 自带的命令提示窗口 编译 openssl Windows 上编译需要使用 Perl 安装 perl ActivePerl (5.26、5.28)装上后配置 openssl 时用提示缺少 Win32::Console 模组,用于安装模组的 cpan 命令又需要这个模组,这也太矛盾了吧!网上也有不少人遇到这个问题,难道发布时就不测测?好奇怪呀。所以最后安装了 StrawberryPerl 5.28.2.1,一切正常。 下载 openssl 源码:https://github.com/openssl/openssl 下载 NASM 汇编编译器:https://www.nasm.us/ set path=C:\Users\Matt\AppData\Local\bin\NASM;%path% 编译静态链接库版本: perl Configure VC-WIN64A --prefix=D:\Qt\openssl-OpenSSL_1_1_1-stable\release\vc_x64_static --openssldir=D:\Qt\openssl-OpenSSL_1_1_1-stable\release\vc_x64_static no-asm no-shared # no-shared 编译成静态库 nmake nmake test 测试编译结果 Result: PASS nmake install 编译 Qt set LLVM_INSTALL_DIR=C:\Program Files\LLVM set path=D:\Qt\jom_1_1_3;%path% configure -opensource -confirm-license -static -debug-and-release -prefix "D:\Qt\kits\Qt5.15.0_MSVC2019_x64_static" -qt-zlib -qt-pcre -qt-libpng -qt-libjpeg -qt-freetype -opengl desktop -qt-sqlite -openssl-linked OPENSSL_PREFIX=“D:\Qt\openssl-OpenSSL_1_1_1-stable\release\vc_x64_static" -skip qtwebengine -nomake examples -nomake tests 如果想重新配置,手动删除源码根目录的 config.cache。 配置完后提示: Qt is now configured for building. Just run 'nmake'. Once everything is built, you must run 'nmake install'. Qt will be installed into 'D:\Qt\kits\Qt5.15.0_MSVC2019_x64_static'. Prior to reconfiguration, make sure you remove any leftovers from the previous build. 编译: nmake nmake install Qt is now configured for building. Just run 'jom'. Once everything is built, you must run 'jom install'. Qt will be installed into 'D:\Qt\kits\Qt5.15.0_MSVC2019_x64_static'. Prior to reconfiguration, make sure you remove any leftovers from the previous build. 编译: jom -j 12 jom install MinGW 版 打开 mingw32 版 Qt 附带的命令行工具: configure -opensource -confirm-license -static -release -platform win32-g++ -prefix "D:\Qt\build\Qt5.15.0_MinGW_x86" -qt-zlib -qt-pcre -qt-libpng -qt-libjpeg -qt-freetype -opengl desktop -qt-sqlite -nomake examples -nomake tests 配置完后提示: Qt is now configured for building. Just run 'mingw32-make'. Once everything is built, you must run 'mingw32-make install'. Qt will be installed into 'D:\Qt\build\Qt5.15.0_MinGW_x86'. Prior to reconfiguration, make sure you remove any leftovers from the previous build. 编译: mingw32-make -j8 mingw32-make instal...
Qt JSON 库
Qt 的 JSON 库由几种对象和相应的头文件组成,主要的有: QJsonDocument 该类用于操作 JSON 文档。 从文件到文档对象实例: QJsonDocument jDoc(QJsonDocument::fromJson(file.readAll())) 此外还有 fromBinaryData() 或 fromRawData() 方法。 JSON 对象 obj 到 文档 到文件: QJsonDocument jDoc(obj); file.write(jDoc.toJson(QJsonDocument::Indented)); QJsonObject QJsonObject 是一个重要的类型,它就是 JSON 中的“对象”概念。一个对象就是一个键值对。 使用 insert() 插入一个键值对或覆盖一个已存在的键值对还可以删掉一个键值对, 用 remove() 可以删除一个键值对。 QJsonArray 它是 JSON 数组类,可以存储多个没有键的值(QJsonValue) QJsonValue QJsonValue 也是一个重要的常用类型,它是键值对的值或是数组的值。而值可以是一个键值对,也可以是一个数组,还可以是其它类型: bool(QJsonValue::Bool) double(QJsonValue::Double) string(QJsonValue::String) array(QJsonValue::Array) object(QJsonValue::Object) null(QJsonValue::Null) 要操作一个对象类型的值,要先把值转换成对象副本才可以: QJsonValue.toObject() 所以不能直接修改一个值 ValueA 下面的某个键的值 ValueB,只能将这个值 ValueA 转换成 ObjectA 然后修改 Object 的某个键的值 ValueB,然后再用对象 ObjectA 覆盖 ValueA(可以用 insert 方法)。如果要修改多层次的某个值,就要采用递归的方法一级一级找到要修改的值,然后用高层次的对象覆盖。这点就比 python 的 json 数据操作麻烦...
QtMqtt 库的使用
QtMqtt 库是官方的 mqtt 库,但是是属于 Qt for Automation 商业套件的。需要下载源码自己编译才能用。 源码:https://github.com/qt/qtmqtt 文档:https://doc.qt.io/QtMQTT/qmqttclient.html 编译成静态库 在 Qt5.15.0_MSVC2019_x64_static\include 创建 QtMqtt 文件夹,将头文件从源码 src 文件夹拷贝过去。 set path=D:\Qt\kits\Qt5.15.0_MSVC2019_x64_static\bin;%path% qmake nmake nmake install nmake docs 使用的时候 pro 文件加 QT += mqtt MQTT Broker 非加密测试: broker:test.mosquitto.org 1883 MQTT Broker 单向向认证测试: broker:test.mosquitto.org 8883 MQTT Broker 双向认证测试: broker:test.mosquitto.org 8884 证书生成与注册 http://test.mosquitto.org/ssl/ 生成私钥: openssl genrsa -out client.key 生成客户端证书: openssl req -out client.csr -key client.key -new 在服务器上添加证书...
QString 与 Qt 文字编码
Unicode Unicode 是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。目前的 Unicode 字符分为 17 组编排,0x0000 至 0x10FFFF,每组称为平面(Plane),而每平面拥有 65536 个码位,共 1114112 个。 它是方案而不是实际的数据格式,或者说它是一项标准而不是具体编码。旧版本的 Windows 记事本另存中有 Unicode 选项,实际上这里的 Unicode 指的是 UTF-16,一些别的软件中也可能是 UCS-2。也许是微软意识到叫 Unicode 不合适,所以 Win10 中改成了 UTF-16。UTF-32、UTF-16 、UTF-8、UCS-2 等都是 Unicode 编码的实现形式。 UTF-8 UTF(Unicode Transformation Format),通用转换格式。UTF-8 是针对 Unicode 的一种可变长度字符编码。它可以用来表示 Unicode 标准中的任何字符。UTF-8 使用 1 ~ 4 字节为每个字符编码,1 字节的 UTF-8 字符与 ASCII(7 位)是兼容的。 UTF-8 编码规则:如果只有一个字节则其最高二进制位为 0;如果是多字节,其第一个字节从最高位开始,连续的二进制位值为 1 的个数决定了其编码的字节数,其余各字节均以 10 开头。 UTF-8 的编码方法决定了它是有字节序并且字节序是明确的。它是以字节为单位传输和处理的,所以不存在多字节数值大小端的问题。所以也就没有大小端的定义。因为是基于 8 位字节的,所以是 -8。 UTF-8 的特征决定了它适宜用于网络数据传输等业务(不用区分大小端字节序),不太适合做存储、字符串分析等(通过 UTF-8 的字节数不太容易得出实际的字符数量)。 UTF-16 UTF-16 比起 UTF-8,好处在于大部分字符都以固定长度的字节 (2 字节) 储存,但 UTF-16 却无法兼容于 ASCII 编码(因为 ASCII 也用两个字节)。在 Unicode 基本多文种平面定义的字符(无论是拉丁字母、汉字或其他文字或符号),一律使用 2 字节储存。而在辅助平面定义的字符,会以代理对(surrogate pair)的形式,以两个 2 字节的值来储存。所以 UTF-16 是两字节或 4 字节的。 UTF-16 与 UCS-2 的关系 UTF-16 可看成是 UCS-2 的父集。在基本多文种平面(Basic Multilingual Plane),UTF-16 与 UCS-2 是一致的,所以有的软件写的是 UCS-2,有的软件写的是 UTF-16,是一样的。但当引入辅助平面字符后,就称不一样了。 GB18030 兼容了 GBK、GB2312。 Latin1 Latin1 是 ISO-8859-1 的别名,有些环境下写作 Latin-1。ISO-8859-1 编码是单字节编码,向下兼容 ASCII,其编码范围是 0x00 - 0xFF,0x00 - 0x7F 之间完全和 ASCII 一致,0x80 - 0x9F 之间是控制字符,0xA0 - 0xFF 之间是文字符号。 QChar 封装了 16-bit Unicode 字符(UTF-16)。 QString 则是由 QChar 形成的字符串,所以 QString 所存储的字符串就是 UTF-16 编码的。 所以不要说某个 QString 字符串是 GBK 编码还是 UTF-8 编码,都不存在的,只能是 UTF-16 编码。 GBK 与 UTF-8 的转换只能在 QByteArray 之间转换,桥梁是 QString,而不是在 QString 之间转换。 小实验 QString str = "中文"; qDebug() << str; qDebug() << qstr2hex(str, true); //utf-16 4E 2D 65 87 qDebug() << str.toUtf8().toHex(' ').toUpper(); //utf-8 E4 B8 AD E6 96 87 qDebug() << str.toLatin1().toHex(' ').toUpper(); //非Latin1,输出“??” QTextCodec::setCodecForLocale(gbk); qDebug() << str.toLocal8Bit().toHex(' ').toUpper(); //GBK D6 D0 CE C4 QTextCodec::setCodecForLocale(utf8); qDebug() << str.toLocal8Bit().toHex(' ').toUpper(); //utf-8 E4 B8 AD E6 96 87 QTextCodec::setCodecForLocale(nullptr); qDebug() << str.toLocal8Bit().toHex(' ').toUpper(); //默认gbk D6 D0 CE C4 输出: "中文" "4E 2D 65 87" "E4 B8 AD E6 96 87" "3F 3F" "D6 D0 CE C4" "E4 B8 AD E6 96 87" "D6 D0 CE C4"...
Qt 5.9 静态编译笔记
静态编译 使用 Windows 系统 1、安装环境要求: Supported compiler (Visual Studio 2012 or later, MinGW-builds gcc 4.9 or later) Perl version 5.12 or later http://www.activestate.com/activeperl/ Python version 2.7 or later http://www.activestate.com/activepython/ Ruby version 1.9.3 or later http://rubyinstaller.org/ 2、确保环境变量 Path 中已经加入 Python 、Per、Ruby、D:\Qt\Qt5.9.0\Tools\mingw530_32\bin 的路径。 配置 configure -opensource -confirm-license -static -release \ -platform win32-g++ \ -prefix "D:\Qt\qt_5.9.0_mingw32_static_kits" \ -no-opengl \ -no-openssl \ -nomake tools \ -nomake examples \ -nomake tests \ -qt-freetype \ -qt-libpng \ -qt-libjpeg \ -qt-sqlite \ -qt-pcre \ -qt-zlib \ -skip qt3d \ -skip qtactiveqt \ -skip qtandroidextras \ -skip qtcanvas3d \ -skip qtcharts \ -skip qtconnectivity \ -skip qtdatavis3d \ -skip qtdeclarative \ -skip qtdoc \ -skip qtgamepad \ -skip qtgraphicaleffects \ -skip qtimageformats \ -skip qtlocation \ -skip qtmacextras \ -skip qtmultimedia \ -skip qtnetworkauth \ -skip qtpurchasing \ -skip qtquickcontrols \ -skip qtquickcontrols2 \ -skip qtremoteobjects \ -skip qtscript \ -skip qtscxml \ -skip qtsensors \ -skip qtspeech \ -skip qtsvg \ -skip qttools \ -skip qttranslations \ -skip qtvirtualkeyboard \ -skip qtwebchannel \ -skip qtwebengine \ -skip qtwebsockets \ -skip qtwebview \ -skip qtwinextras \ -skip qtx11extras \ -skip qtxmlpatterns \ -no-feature-dbus -skip 选项可以排除 Qt 标准库(standard repository)之外的子模组(Git Submodule),子模组名就是源码目录中对应的目录名。有些子模组会包含多个模块(Qt modules),比如说 qtconnectivity 子模组就包含了 Qt NFC 模块和 Qt Bluetooth 模块。 -feature-<feature> and -no-feature-<feature> 选项用于包含与排除 Qt 基础库(qtbase 库)的特征。qtbase/src/corelib/global/qfeatures.txt 文件中列出了所有的特征。 -qt-<library>、-system-、-no-<library> 选项用于选择使用源码中自带的还是系统提供的第三方库(third-party libraries),或者都不使用。这些第三方库位于 qtbase/src/3rdparty 编译 mingw32-make -j 4 安装 mingw32-make install 修改连接选项 D:\Qt\qt_5.9.0_mingw32_static_kits\mkspecs\win32-g++\qmake.conf 加入 QMAKE_LFLAGS = -static 或 修改 QMAKE_LFLAGS_RELEASE = -Wl,-s 为 QMAKE_LFLAGS_RELEASE = -Wl,-s -static 或 在工程文件中加入 QMAKE_LFLAGS = -static 通过实验来看应该不用修改 QMAKE_LFLAGS_DLL 的值为 -static,暂时还不了解 QMAKE_LFLAGS_DLL 的用途(估计是指链接生成 dll 文件时用的)。 有些时候还需要配置 qt.conf 如果编译好的 Qt 库的存放位置发生了变化(与 -prefix 参数所指定的不同),则 Qt Versions 提示“Qt没有被正确安装,请运行make install”,解决方法使在 qmake.exe 目录创建 qt.conf,内容为: [paths] prefix = D:/Qt/qt_5.9.0_mingw32_static_kits #当前的实际路径 在 Qt Creator 中配置 注意事项 从 Qt 5.7 开始,已经不支持 Windows XP 平台了,运行程序会提示找不到 dwmapi.dll 。如果编译后的程序需要在 XP 系统上使用,需要使用 Qt 5.6 编...
把 qt 库加入 rootfs 并制作 UBIFS 镜像
解压 rootfs: sudo tar -zxvf rootfs.tar.gz -C rootfs 添加 10_usbkey.rules到 /etc/udev/rules.d(自动挂载,非必须) 编辑 /etc/profile,加入: export LD_LIBRARY_PATH=/qtlib 编辑 /etc/inittab,加入: ttyO0::respawn:/bin/login -f root 实现自动登陆(非必要) 创建 /qtlib 把 QT 的部分动态库库放进去。 制作镜像: sudo ./mkfs.ubifs -F -r rootfs -m 2048 -e 126976 -c 1866 -o ubifs.img ./ubinize -o ubi.img -m 2048 -p 128KiB -s 2048 -O 2048 ubinize-256M.cf...
编译用于在 Windows 系统下开发 ARM Linux 的 Qt 库
1、在 https://www.mentor.com/embedded-software/sourcery-tools/sourcery-codebench/editions/lite-edition/ 下载 Windows 版 ARM 交叉编译工具链。 Sourcery CodeBench Lite Edition Sourcery CodeBench Lite Edition is a free, unsupported version of Sourcery CodeBench, available for select processors. Sourcery CodeBench is a complete development environment for embedded C/C++ development. Sourcery CodeBench Lite Edition includes: GNU C and C++ compilers GNU assembler and linker C and C++ runtime libraries GNU debugger 我使用的是 arm-2014.05-29-arm-none-linux-gnuea...