Qt配置选项
configure是一个命令行工具,它确定如何为特定平台构建Qt。配置可以排除Qt中的功能,并确定Qt如何在主机平台上构建和部署应用程序。该页面讨论了一些 configure 选项,但是要获得完整的选项列表,请输入命令configure -h
。配置应从Qt主目录运行。
源目录,构建目录和安装目录
所述源目录包含从源包或git仓库中获得的源代码。所述构建目录是构建相关的文件,例如生成文件,对象文件和其他中间文件的存储。该安装目录是二进制文件和库安装,使用或者由系统或应用程序。
建议通过阴影构建和使用该-prefix选项将这些目录分开。这使您能够保持Qt 源代码树中的构建工件和二进制文件干净,这些工件和二进制文件存储在单独的目录中。如果要从同一源代码树进行多个构建,但要针对不同的配置,则此方法非常方便。要进行影子构建,请在configure单独的目录中运行:
mkdir ~/qt-build
cd ~/qt-build
~/qt-source/configure -prefix /opt/Qt5.9
qmake
使用-prefix
选项进行配置意味着将Qt二进制文件和库安装到另一个目录中,/opt/Qt5.9在这种情况下就是这样。运行会qmake在〜/ qt-build目录而不是源目录中生成Makefile 。在生成文件之后,运行以下命令来构建Qt二进制文件和库并安装它们:
make
make install
注意:仅当Qt配置了-prefix时,才需要执行“ make install”步骤,这是基于Unix的平台上的默认设置,除非使用了-developer-build configure
选项。在Windows上,默认情况下Qt被配置为非前缀版本。
注意:-developer-build
用途是开发Qt,而不是用于运输应用程序。这样的构建包含比标准构建更多的导出符号,并以更高的警告级别进行编译。
模块和功能
Qt由不同的模块组成,这些模块的源可以在顶级源目录的不同目录中找到。用户可以明确排除特定的顶级目录以限制构建时间。此外,每个Qt模块可能具有可以显式启用或禁用的功能。
剔除模块
配置-skip
选项允许将顶级源目录从Qt构建中排除。请注意,许多目录包含多个Qt模块。例如,要从Qt构建中排除Qt NFC和Qt蓝牙,请提供-skip qtconnectivity
配置参数。
./configure -skip qtconnectivity
包含或剔除特性feature
使用-feature-<feature>
和-no-feature-<feature>
选项
例如,要禁用Accessibility,请提供-no-feature-accessibility
作为参数:
./configure -no-feature-accessibility
用configure -list-features
在命令行上显示所有可用features的列表。请注意,一个 feature 可能取决于其他 feature,因此禁用一个 feature 可能会对其他 feature 产生副作用。
疑惑:官方提到“作为用于设备创建的Qt的一部分的Qt配置工具允许通过方便的用户界面来调整feature和依赖项”,但是在QT5.12.0版本中使用工具配置的时候,并不能显示features的依赖关系,模块的依赖确实可以。
第三方库
Qt源码包包括第三方库。要设置Qt是使用库的系统版本还是使用捆绑的版本,请在库名称之前-system或之中传递以-qt进行配置。
下表总结了第三方选项:
Library Name | Bundled in Qt | Installed in System |
---|---|---|
zlib | -qt-zlib | -system-zlib |
libjpeg | -qt-libjpeg | -system-libjpeg |
libpng | -qt-libpng | -system-libpng |
xcb | -qt-xcb | -system-xcb |
reetype | -qt-freetype | -system-freetype |
PCRE | -qt-pcre | -system-pcre |
HarfBuzz-NG | -qt-harfbuzz | -system-harfbuzz |
也可以使用-no代替来禁用对这些库的支持-qt。例如,要使用系统的xcb库并禁用zlib支持,请输入以下内容:
./configure -no-zlib -qt-libjpeg -qt-libpng -system-xcb
编译器选项
-platform
选项设置用于构建Qt源的主机平台和编译器。在“ 受支持的平台”页面中找到受支持的平台和编译器的列表,而完整列表位于qtbase/mkspecs
目录中。
例如,在Ubuntu Linux系统上,Qt可以通过clang或g++等几种编译器进行编译:
./configure -platform linux-clang
./configure -platform linux-g++
./configure -platform linux-g++-32
之后,生成的Makefile将使用适当的编译器命令。
交叉编译选项
要配置Qt以进行跨平台开发和部署,需要为目标平台设置开发工具链。此设置在受支持的平台之间有所不同。
常见选项有:
-xplatform
:目标平台。有效的xplatform选项与qtbase/mkspecs中的-platform选项相同。-device
:特定的设备或芯片组。可在qtbase/mkspecs/devices中找到与之兼容的配置设备列表。有关更多信息,请访问Devices Wiki页面。-device-option
:设置其他qmake变量。例如,-device-option CROSS_COMPILE=<path-to-toolchain>
提供CROSS_COMPILE某些设备所需的环境变量。
注意:非桌面目标的工具链通常带有所谓的sysroot,需要针对Qt对其进行配置。