Qt5.7.0配置选项(configure非常详细的参数)

configure是一个命令行工具,用于配置Qt编译到指定平台。configure必须运行于Qt源码根目录。当运行configure时,编译源码使用的是所选工具链中的make工具。

一.源码目录、编译目录和安装目录

源码目录就是包含源码的目录。编译目录是包含Makefiles文件、object文件和其他中间文件的目录。安装目录是二进制文件和库文件安装的目录。

当编译目录和源码目录不一样时,称为影子编译(shadow build),比如说,Qt Creator默认是使用影子编译来编译工程的。这里也可以使用影子编译,方法就是新建一个目录,然后cd到该目录中运行configure,如下所示。

  1. mkdir ~/qt-build  
  2. cd ~/qt-build  
  3. ~/qt-source/configure 

此时,configure时生成的Makefiles文件,以及编译时生成的中间文件都会拷贝到qt-build目录。不仅如此,通过影子编译,可以同时进行多个不同配置选项的编译过程,互不影响。
默认的安装目录和平台相关,但是在configure时,可以通过-prefix选项指定安装目录,比如./configure -prefix /opt/Qt-5.7。这样一来,在执行make install指令时,编译完成的bin、lib或者其他子目录就会拷贝到/opt/Qt-5.7目录中。

二.包含和排除Qt模块

通过configure,可以包含或排除指定的Qt模块。需要注意的是,许多模块依赖于其他的模块,不恰当的配置选项会导致依赖问题。

1.排除Qt模块

使用configure的-skip选项可以排除Qt模块,一般情况下模块名就是源码目录中对应的子目录名。有些子目录会包含多个模块,比如说qtconnectivity目录就包含了Qt NFC模块和Qt Bluetooth模块,排除这两个模块需要将-skip qtconnectivity作为配置参数,如下所示。

  1. ./configure -skip qtconnectivity  

2.包含或排除特性

-feature-<feature> 和 -no-feature-<feature>选项用于包含和排除特性。可用的<feature>都被罗列在tbase/src/corelib/global/qfeatures.txt文件中。比如,要禁用accessibility特性,可用使用-no-feature-accessibility选项,如下所示。

  1. ./configure -no-feature-accessibility  

三.第三方库

Qt源码中包含了一些第三方库,如果想使用Qt自带的第三方库,可用通过-qt配置;如果想使用系统中的第三方库,可用通过-system配置。下表中列出一些第三方库及其配置选项。

Library NameBundled in QtInstalled in System
zlib-qt-zlib-system-zlib
libjpeg-qt-libjpeg-system-libjpeg
libpng-qt-libpng-system-libpng
xcb-qt-xcb-system-xcb
xkbcommon-qt-xkbcommon-system-xkbcommon
freetype-qt-freetype-system-freetype
PCRE-qt-pcre-system-pcre
HarfBuzz-NG-qt-harfbuzz-system-harfbuzz

当然,也可以禁用这些第三方库,用-no替换-qt就行,如下所示。

  1. ./configure -no-zlib -qt-libjpeg -qt-libpng -system-xcb  

四.编译选项

-platform选项指定了目标平台和编译时使用的编译器,Qt支持的平台和编译器都在qtbase/mkspecs目录中。比如,在Ubuntu Linux系统中,Qt能被多种编译器编译,比如clang和g++,如下所示。

  1. ./configure -platform linux-clang  
  2. ./configure -platform linux-g++  
  3. ./configure -platform linux-g++-32  

对于Windows系统,可以用MinGW或者Visual Studio工具链,如下所示。

  1. configure.bat -platform win32-g++  
  2. configure.bat -platform win32-msvc2010  

五.交叉编译选项

通用的选项如下所示。

-xplatform:指定目标平台,可用的xplatform与platform类似,也在qtbase/mkspecs目录中。

-device:指定特殊的设备或芯片,configure兼容的device在qtbase/mkspecs/devices目录中。

-device-option:设置额外的qmake参数,比如,-device-option CROSS_COMPILE=<path-to-toolchain>提供了特定设备交叉编译所需的环境变量。

六.Windows中使用OpenGL选项

在Windows中,Qt可以配置使用系统的OpenGL或者自带的ANGLE。默认情况下,Qt会配置使用ANGLE,ANGLE依赖于DirectX SDK。ANGLE使得依赖于OpenGL的Qt应用程序可以在没有安装OpenGL的机器上运行。

-opengl选项可以配置Qt使用目标机器上的OpenGL,如下所示。

  1. configure.bat -opengl desktop  

desktop选项告知Qt使用Windows上的OpenGL,当然前提是要求Windows上的OpenGL与Qt兼容。

-opengl选项支持两个版本的OpenGL ES,一个是es2,一个是es1,如下所示。

  1. configure.bat -opengl es2  

七.configure -h

configure -h与configure -help功能相同,显示所有配置选项。以下是Windows上Qt5.7.0的配置选项。

Installation options:

These are optional, but you may specify install directories.

 -prefix <dir> ...... The deployment directory, as seen on the target device.(default %CD%)

-extprefix <dir> ... The installation directory, as seen on the host machine.(default SYSROOT/PREFIX)

 -hostprefix [dir] .. The installation directory for build tools running onthe host machine. If [dir] is not  given, 

the current builddirectory will be used. (default EXTPREFIX) 

You may use these to change the layout of the install. Note that all directories except -sysconfdir should be located under -prefix/-hostprefix:

 -bindir <dir> ...... User executables will be installed to <dir>.(default PREFIX/bin) 

-libdir <dir> ...... Libraries will be installed to <dir>.(default PREFIX/lib)

 -headerdir <dir> ... Headers will be installed to <dir>. (default PREFIX/include) 

 -archdatadir <dir> . Architecture-dependent data used by Qt will be installed to <dir>.(default PREFIX)

 -libexecdir <dir> .. Program executables will be installed to <dir>.(default ARCHDATADIR/bin)

-plugindir <dir> ... Plugins will be installed to <dir>.(default ARCHDATADIR/plugins)

  -importdir <dir> ... Imports for QML1 will be installed to <dir>.(default ARCHDATADIR/imports)

-qmldir <dir> ...... Imports for QML2 will be installed to <dir>.(default ARCHDATADIR/qml)

  -datadir <dir> ..... Data used by Qt programs will be installed to <dir>.(default PREFIX)

 -docdir <dir> ...... Documentation will be installed to <dir>.(default DATADIR/doc)

-translationdir <dir> Translations of Qt programs will be installed to <dir>.(default DATADIR/translations)

-examplesdir <dir> . Examples will be installed to <dir>.(default PREFIX/examples)

 -testsdir <dir> .... Tests will be installed to <dir>.(default PREFIX/tests)

 -hostbindir <dir> .. Host executables will be installed to <dir>.(default HOSTPREFIX/bin)

-hostlibdir <dir> .. Host libraries will be installed to <dir>.(default HOSTPREFIX/lib)

-hostdatadir <dir> . Data used by qmake will be installed to <dir>.(default HOSTPREFIX)    

Configure options:

The defaults (*) are usually acceptable. A plus (+) denotes a default value that needs to be evaluated. If the evaluation succeeds, the feature is included. Here is a short explanation of each option:

 -release ........... Compile and link Qt with debugging turned off.

 *  -debug ............. Compile and link Qt with debugging turned on.

+  -debug-and-release . Compile and link two Qt libraries, with and without debugging turned on.

-force-debug-info .. Create symbol files for release builds.

 -separate-debug-info Strip debug information into a separate file.

-developer-build ... Compile and link Qt with Qt developer options(including auto-tests exporting)     

 -optimized-tools ... Build optimized host tools even in debug build.

 *  -no-optimized-tools Do not build optimized host tools even in debug build

  -opensource ........ Compile and link the Open-Source Edition of Qt.

 -commercial ........ Compile and link the Commercial Edition of Qt.

  -C++std <edition> .. Compile Qt with C++ standard edition (c++11, c++14, c++1z)Default: highest supported. 

  This  option is notsupported for MSVC.     

-use-gold-linker ... Link using the GNU gold linker (gcc only).

 *  -no-use-gold-linker Do not link using the GNU gold linker.

 -enable-new-dtags .. Use new DTAGS for RPATH (Linux only).

 *  -disable-new-dtags . Do not use new DTAGS for RPATH.

*  -shared ............ Create and use shared Qt libraries.

-static ............ Create and use static Qt libraries.

 *  -static-runtime .... Statically link the C/C++ runtime library.

  -ltcg .............. Use Link Time Code Generation. (Release builds only)

 *  -no-ltcg ........... Do not use Link Time Code Generation.

-make <part> ....... Add part to the list of parts to be built at make time,list containslibs,tools,examples   

 -nomake <part> ..... Exclude part from the list of parts to be built.

-skip <module> ..... Exclude an entire module from the build.

  -no-compile-examples Install only the sources of examples.

-no-widgets ........ Disable Qt Widgets module.

 -no-gui ............ Disable Qt GUI module.

-no-accessibility .. Disable accessibility support.Disabling accessibility is not recommended, as it willbreak 

QStyle and may break other internal parts of Qt.With this switch you create a source 

   incompatibleversion of Qt,which is unsupported.        

 *  -accessibility ..... Enable accessibility support.

 -no-sql-<driver> ... Disable SQL <driver> entirely, by default none are turned on.   

 -qt-sql-<driver> ... Enable a SQL <driver> in the Qt Library.

  -plugin-sql-<driver> Enable SQL <driver> as a plugin to be linked to at run time.Available values for <driver>: 

  MySQL

psql

oci

 odbc

 tds

db2

sqlite

sqlite2

   ibase

 (drivers marked with a '+' have been detected asavailable on this system)  

   -system-sqlite ..... Use sqlite from the operating system.

 -no-opengl ......... Do not support OpenGL.

 -opengl <api> ...... Enable OpenGL support with specified API version.Available values for <api>:
                                  desktop - Enable support for Desktop OpenGL

  dynamic - Enable support for dynamically loadedOpenGL (either desktop or ES)
 *                               es2 - Enable support for OpenGL ES 2.0

*  -no-openvg ......... Disables OpenVG functionality.

  -openvg ............ Enables OpenVG functionality.

-force-asserts ..... Activate asserts in release mode.

-platform <spec> ... The operating system and compiler you are building on.(default %QMAKESPEC%)

-xplatform <spec> .. The operating system and compiler you are cross compiling to.See the README file for a 
                                     list of supported operatingsystems and compilers.

-target ............ Set target OS version. Currently the only valid value is 'xp' for targeting Windows XP.MSVC >=2012
                             targets Windows Vista by default.

 -sysroot <dir> ..... Sets <dir> as the target compiler's and qmake's sysroot and also sets pkg-config paths.   

-no-gcc-sysroot .... When using -sysroot, it disables the passing of --sysroot to the compiler.

  -qconfig <local> ... Use src/corelib/global/qconfig-<local>.h rather than the default 'full'.      

*  -no-nis ............ Do not compile NIS support.

  -nis ............... Compile NIS support.

 -no-iconv .......... Do not enable support for iconv(3).

 +  -iconv ............. Enable support for iconv(3).

+  -sun-iconv ......... Enable support for iconv(3) using sun-iconv.

 +  -gnu-iconv ......... Enable support for iconv(3) using gnu-libiconv.

 -no-evdev .......... Do not enable support for evdev.

+  -evdev ............. Enable support for evdev.

 -no-mtdev .......... Do not enable support for mtdev.

+  -mtdev ............. Enable support for mtdev.

+  -inotify ........... Explicitly enable Qt inotify(7) support.

-no-inotify ........ Explicitly disable Qt inotify(7) support.

+  -eventfd ........... Enable eventfd(7) support in the UNIX event loop.

-no-eventfd ........ Disable eventfd(7) support in the UNIX event loop.

*  -largefile ......... Enables Qt to access files larger than 4 GB.

-posix-ipc ......... Enable POSIX IPC.

   -glib .............. Compile Glib support.

-sysconfdir <dir> .. Settings used by Qt programs will be looked for in <dir>.      

-system-proxies .... Use system network proxies by default.

*  -no-system-proxies . Do not use system network proxies by default.

 +  -warnings-are-errors Make warnings be treated as errors.

 -no-warnings-are-errors Make warnings be treated normally.

-qtnamespace <name> Wraps all Qt library code in 'namespace name {...}'.

 -qtlibinfix <infix> Renames all Qt* libs to Qt*<infix>.

  -D <define> ........ Add an explicit define to the preprocessor.

-I <includepath> ... Add an explicit include path.

 -L <librarypath> ... Add an explicit library path.

 -l <libraryname> ... Add an explicit library name, residing in a librarypath.

   -no-pch ............ Do not use precompiled header support.

*  -pch ............... Use precopmiled header support.

-help, -h, -? ...... Display this information.

Third Party Libraries:

 -qt-zlib ........... Use the zlib bundled with Qt.

 +  -system-zlib ....... Use zlib from the operating system.See http://www.gzip.org/zlib  

-qt-pcre ........... Use the PCRE library bundled with Qt.

+  -system-pcre ....... Use the PCRE library from the operating system.See http://pcre.org/ 

 -icu ............... Use the ICU library.

*  -no-icu ............ Do not use the ICU library.See http://site.icu-project.org/

 -no-gif ............ Do not compile GIF reading support.

-no-libpng ......... Do not compile PNG support.

 -qt-libpng ......... Use the libpng bundled with Qt.

 +  -system-libpng ..... Use libpng from the operating system.See http://www.libpng.org/pub/png

   -no-libjpeg ........ Do not compile JPEG support.

 -qt-libjpeg ........ Use the libjpeg bundled with Qt.

 +  -system-libjpeg .... Use libjpeg from the operating system.See http://www.ijg.org

 -no-doubleconversion Use sscanf_l and snprintf_l for (imprecise) double con version.

-qt-doubleconversion Use the libdouble-conversion bundled with Qt.

-system-doubleconversion Use the libdouble-conversion provided by the system.

  -no-freetype ....... Do not compile in Freetype2 support.

*  -qt-freetype ....... Use the libfreetype bundled with Qt.

-system-freetype ... Use the libfreetype provided by the system.

 -fontconfig ........ Build with FontConfig support.

*  -no-fontconfig ..... Do not build with FontConfig support.

  -no-harfbuzz ....... Do not compile in HarfBuzz-NG support.

*  -qt-harfbuzz ....... Use HarfBuzz-NG bundled with Qt to do text shaping.It can still be disabled by settingthe 

  QT_HARFBUZZ environment variable to "old".  

 -system-harfbuzz ... Use HarfBuzz-NG from the operating system to do text shaping. It can still be disabled by 

  setting the QT_HARFBUZZ environment variable to"old".See http://www.harfbuzz.org 

 +  -angle ............. Use the ANGLE implementation of OpenGL ES 2.0.

   -no-angle .......... Do not use ANGLE.See http://code.google.com/p/angleproject/

Qt for Windows only:

-no-incredibuild-xge Do not add IncrediBuild XGE distribution commands to custom build steps. 

 and UIC steps,and other custom buildsteps which are added to theINCREDIBUILD_XGE 

variable.(The IncrediBuild distribution commands are only addedto Visual Studio projects)

 *  -no-plugin-manifests Do not embed manifests in plugins.

-plugin-manifests .. Embed manifests in plugins.

 -no-qmake .......... Do not compile qmake.

*  -qmake ............. Compile qmake.

-qreal [double|float] typedef qreal to the specified type. The default is double.Note that changing this flag affects binary compatibility.  
    -no-rtti ........... Do not compile runtime type information.

 *  -rtti .............. Compile runtime type information.
    -no-strip .......... Do not strip libraries and executables of debug info when installing.

*  -strip ............. Strip libraries and executables of debug info when installing.
    -no-sse2 ........... Do not compile with use of SSE2 instructions.

 +  -sse2 .............. Compile with use of SSE2 instructions.
    -no-sse3 ........... Do not compile with use of SSE3 instructions.

 +  -sse3 .............. Compile with use of SSE3 instructions.
    -no-ssse3 .......... Do not compile with use of SSSE3 instructions.

+  -ssse3 ............. Compile with use of SSSE3 instructions.
    -no-sse4.1 ......... Do not compile with use of SSE4.1 instructions.

 +  -sse4.1 ............ Compile with use of SSE4.1 instructions.
    -no-sse4.2 ......... Do not compile with use of SSE4.2 instructions.

+  -sse4.2 ............ Compile with use of SSE4.2 instructions.
    -no-avx ............ Do not compile with use of AVX instructions.

+  -avx ............... Compile with use of AVX instructions.
    -no-avx2 ........... Do not compile with use of AVX2 instructions.

 +  -avx2 .............. Compile with use of AVX2 instructions.
    -no-avx512 ......... Do not compile with use of AVX512 instructions.

+  -avx512 ............ Compile with use of AVX512 instructions.
    -no-ssl ............ Do not compile support for SSL.

 +  -ssl ............... Enable run-time SSL support.
    -no-openssl ........ Do not compile support for OpenSSL.

+  -openssl ........... Enable run-time OpenSSL support.
    -openssl-linked .... Enable linked OpenSSL support.

 -no-libproxy ....... Do not compile in libproxy support.

 +  -libproxy .......... Compile in libproxy support (for cross compilation targets).
    -no-dbus ........... Do not compile in D-Bus support.
    -dbus-linked ....... Compile in D-Bus support and link to libdbus-1.
    -dbus-runtime ...... Compile in D-Bus support and load libdbus-1 dynamically.
    -no-audio-backend .. Do not compile in the platform audio backend into Qt Multimedia.
 +  -audio-backend ..... Compile in the platform audio backend into Qt Qt Multimedia.

*  -no-wmf-backend .... Do not compile in the windows media foundation backend into Qt Multimedia.

 -wmf-backend ....... Compile in the windows media foundation backend into Qt Multimedia.

-no-qml-debug ...... Do not build the in-process QML debugging support.

*  -qml-debug ......... Build the in-process QML debugging support.

  -no-directwrite .... Do not build support for DirectWrite font rendering.

+  -directwrite ....... Build support for DirectWrite font rendering.

*  -no-direct2d ....... Do not build the Direct2D platform plugin.

 -direct2d .......... Build the Direct2D platform plugin (experimental,requires Direct2D availability on target systems,
                              e.g. Windows 7 with Platform Update, Windows 8, etc.)

 -no-style-<style> .. Disable <style> entirely.

 -qt-style-<style> .. Enable <style> in the Qt Library.

 Available styles:

 *                               windows

 +                              windowsxp

+                              windowsvista

*                               fusion

 -no-native-gestures Do not use native gestures on Windows 7.

*  -native-gestures ... Use native gestures on Windows 7.

*  -no-mp ............. Do not use multiple processors for compiling with MSVC

-mp ................ Use multiple processors for compiling with MSVC (-MP).

 -loadconfig <config> Run configure with the parameters from file configure_<config>.cache.

-saveconfig <config> Run configure and save the parameters in file configure_<config>.cache.

-redo .............. Run configure with the same parameters as last time.

   -v, -verbose ....... Run configure tests with verbose output.

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值