1. 程式人生 > >Qt原始碼編譯configure配置引數

Qt原始碼編譯configure配置引數

安裝選項

選項 作用
-prefix <dir> 指定部署目錄(預設 /usr/local/Qt-5.6.0)
-extprefix <dir> 安裝目錄(預設 SYSROOT/PREFIX)
-hostprefix [dir] 執行在這個主機上的構建工具的安裝目錄,如果不給定,使用當前目錄. (預設 EXTPREFIX)

你可以用這些來改變安裝的佈局。請注意,所有目錄除sysconfdir外,其他的應位於-prefix或者hostprefix下

選項 作用
-bindir <dir> 使用者可執行檔案將安裝到這個目錄(預設 PREFIX/bin)
-headerdir <dir>
標頭檔案安裝目錄(預設 PREFIX/include)
-libdir <dir> 庫檔案安裝目錄(預設 PREFIX/lib)
-archdatadir <dir> QT相關的資料將被安裝到<<目錄>(預設 PREFIX)
-plugindir <dir> 外掛安裝目錄(預設 ARCHDATADIR/plugins)
-libexecdir <dir> 程式的可執行檔案安裝目錄(預設 ARCHDATADIR/libexec, ARCHDATADIR/bin for MinGW)
-importdir <dir> 匯入QML1安裝目錄(預設 ARCHDATADIR/imports)
-qmldir <dir> 匯入QML2安裝目錄(預設 ARCHDATADIR/qml)
-datadir <dir> QT獨立的資料安裝目錄(default PREFIX)
-docdir <dir> 文件安裝目錄(default DATADIR/doc)
-translationdir <dir> Qt程式的翻譯資料安裝目錄(default DATADIR/translations)
-sysconfdir <dir> 設定使用QT程式的搜尋目錄(default PREFIX/etc/xdg)
-examplesdir <dir>
示例檔案安裝目錄(default PREFIX/examples)
-testsdir <dir> 測試檔案安裝目錄(default PREFIX/tests)
-hostbindir <dir> 主機可執行檔案安裝目錄(default HOSTPREFIX/bin)
-hostlibdir <dir> 主機庫檔案安裝目錄(default HOSTPREFIX/lib)
-hostdatadir <dir> qmake使用資料安裝目錄(default HOSTPREFIX)

Configure選項

下表中第一列中的*表示預設並可行的。+表示預設,但需要進行評估(檢測),評估通過才可接受。

選項 作用
* -release 編譯和連結Qt的release版本
-debug 編譯和連結debug版本
-debug-and-release 編譯和連結release和debug兩個版本(僅MAC)
-force-debug-info 為release構建建立符號連結
-developer-build Qt開發者編譯和連結選項(包括自動測試/輸出)
* -no-optimized-tools 即使在除錯版本中,也不構建優化的主機工具
-optimized-tools 構建優化的主機工具,即使在除錯版本
-opensource 編譯和連結Qt開源版本
-commercial 編譯和連結的Qt商業版
-confirm-license 自動確認許可證(使用開源或是商業)
-c++std <edition> 編譯QT使用的C++標準 (c++98, c++11, c++14, c++1z) 預設: 最高支援版本
* -shared 建立並使用Qt共享庫.
-static 建立並使用QT靜態庫
-no-largefile 禁用大檔案支援
+ -largefile 啟用QT訪問大於4 GB的檔案功能
-no-accessibility 不編譯的可訪問性支援,禁用訪問不推薦,它將破壞QStyle並且可能影響QT構建 
這個選項啟用將建立一個源不相容版本的QT,這是不支援
+ -accessibility 編譯訪問支援.
-no-sql-<driver> 完全禁用SQL <driver> .
-qt-sql-<driver> 在 Qt SQL 模組啟用SQL <driver>,預設是不啟用的.
-plugin-sql-<driver> 啟用SQL <driver\>作為一個外掛在執行時連結 
-system-sqlite 利用作業系統SQLite
-no-qml-debug 不構建在QML除錯支援
+ -qml-debug 構建QML除錯支援
-platform target 構建的目標作業系統和編譯器(預設檢測主機系統),讀readme檔案獲取支援的作業系統和編譯器列表
-no-sse2 編譯不要使用SSE2指令
-no-sse3 編譯不要使用SSE3指令
-no-ssse3 編譯不要使用SSSE3指令
-no-sse4.1 編譯不要使用SSE4.1指令
-no-sse4.2 編譯不要使用SSE4.2指令
-no-avx 編譯不要使用AVX指令
-no-avx2 編譯不要使用AVX2指令
-no-mips_dsp 編譯不要使用MIPS DSP指令
-no-mips_dspr2 編譯不要使用MIPS DSP Rev2指令
-qtnamespace <name> 把所有的Qt庫程式碼放入namespace <name> {...}
-qtlibinfix <infix> 重新命名索引libQt*.solibQt*<infix>.so
-testcocoon Instrument Qt with the TestCocoon code coverage tool.
-gcov Instrument Qt with the GCov code coverage tool.
-D <string> 顯示的新增一個巨集定義到前處理器
-I <string> 顯示的新增一個包含路徑
-L <string> 顯示新增一個庫路徑
+ -pkg-config 使用pkg-config檢測包括庫路徑。預設情況下,配置決定是否使用pkg-config或不具有啟發式如檢查環境變數。
-no-pkg-config 禁用pkg-config支援
-force-pkg-config 強制使用pkg-config (跳過pkg-config可用性啟發式檢測).
-help, -h 顯示幫助資訊.

第三方庫:

選項 作用
-qt-zlib 使用QT自帶zlib庫
+ -system-zlib 使用作業系統自帶的zlib庫。
-no-mtdev 不要編譯mtdev支援 ,mtdev包含了應用程式對多點觸控協議的支援
+ -mtdev 啟用mtdev的支援.
+ -no-journald 不要把日誌輸出到journald,Journald是為Linux伺服器打造的新系統日誌方式
-journald 日誌輸出到journald
+ -no-syslog 不要輸出日誌到syslog.
-syslog 輸出日誌到syslog.
-no-gif 不要編譯GIF讀取支援
-no-libpng 不要編譯PNG支援
-qt-libpng 使用Qt自帶的libpng
-no-libjpeg 不要編譯JPEG支援.
-qt-libjpeg 使用QT自帶的libjpeg.
+ -system-libjpeg
-no-freetype 不要編譯Freetype2的支援.
-qt-freetype 使用QT自帶的libfreetype.
+ -system-freetype 使用系統自帶的libfreetype(假如存在) (啟用,如果-fontconfig選項開啟),http://www.freetype.org
-no-harfbuzz 不要編譯HarfBuzz-NG 支援.
* -qt-harfbuzz 使用QT自帶的HarfBuzz-NG 去進行文字構形. 仍然可以通過設定QT_HARFBUZZ 環境變數到”old”來禁用.
-system-harfbuzz 使用系統自帶的HarfBuzz-NG區進行文字構形.仍然可以通過設定QT_HARFBUZZ 環境變數到”old”來禁用 ,http://www.harfbuzz.org
-no-openssl 不要編譯OpenSSL的支援
-openssl 啟用執行時OpenSSL支援.
-openssl-linked 啟用並連結OpenSSL支援
-no-libproxy 不要編譯libproxy的支援
+ -libproxy 使用作業系統自帶的libproxy.
-qt-pcre 使用QT自帶的PCRE library.
+ -system-pcre 使用作業系統自帶的PCRE library
-qt-xcb 使用QT自帶的xcb-libraries. (libxcb.so將仍然使用作業系統自帶的).
+ -system-xcb 使用操作吸引自帶的xcb- libraries .
-xkb-config-root 設定預設的XKB config root. 這個選項僅與-qt-xkbcommon-x11一起使用.
-qt-xkbcommon-x11 在構建xcb中使用QT自帶的xkbcommon library .
+ -system-xkbcommon-x11 在構建xcb中使用作業系統自帶的 xkbcommon library.
-no-xkbcommon-evdev 當編譯libinput支援時,不使用X-less xkbcommon.
* -xkbcommon-evdev 當編譯libinput支援時,使用X-less xkbcommon.
-no-xinput2 不要編譯XInput2的支援.
* -xinput2 編譯XInput2支援.
-no-xcb-xlib 不要編譯Xcb-Xlib支援.
* -xcb-xlib 編譯 Xcb-Xlib支援.
-no-glib 不要編譯 Glib 支援.
+ -glib 編譯 Glib 支援.
-no-pulseaudio 不要編譯PulseAudio 支援.
+ -pulseaudio 編譯 PulseAudio 支援.
-no-alsa 不要編譯 ALSA 支援.
+ -alsa 編譯 ALSA 支援.
-no-gtkstyle 不要編譯GTK theme 支援.
+ -gtkstyle 編譯 GTK theme 支援.

附加選項:

選項 作用
-make <part> 在make時新增要構建的元件. (預設為:libs tools examples
-nomake <part> 在構建時排除元件
-skip <module> 排除整個模組的建立
-no-compile-examples 僅安裝examples的原始碼,不要編譯它.
-no-gui 不要構建Qt GUI模組和依賴.
+ -gui 構建Qt GUI 模組和依賴.
-no-widgets 不要構建Qt Widgets 模組和依賴.
+ -widgets 構建 Qt Widgets模組和依賴
-R <string> 顯示新增一個執行時庫的路徑去構建Qt libraries.
-l <string> 顯示新增一個library.
-no-rpath 不使用庫安裝路徑作為一個執行時庫路徑 
在蘋果的平臺上,這意味著使用絕對安裝名稱(基於在libdir)動態庫和框架。
+ -rpath 連結 Qt 庫和可執行檔案使用庫安裝路徑作為執行時庫路徑。相當於-R install_libpath
-continue 如果發生錯誤,儘量繼續。
-verbose, -v 列印每個步驟的配置過程的詳細的資訊。
-silent 減少生成輸出,這樣可以更容易看到警告和錯誤。
-no-nis 不要編譯NIS 支援.
* -nis 編譯 NIS 支援.
-no-cups 不要編譯CUPS支援.
* -cups 編譯CUPS支援. 要求 cups/cups.h 和libcups.so.2.
-no-iconv 不編譯對 iconv(3) 的支援。
* -iconv 編譯對 iconv(3) 的支援。
-no-evdev 不編譯對 evdev 的支援。
* -evdev 編譯對 evdev 的支援。
-no-tslib 不編譯對 tslib 的支援 
tslib是對觸屏的支援
* -tslib 編譯對 tslib 的支援.
-no-icu 不編譯對 ICU libraries 的支援. 
這是IBM釋出的字符集編碼轉換庫
+ -icu 編譯對 ICU libraries 的支援.
-no-fontconfig 不編譯系統中的FontConfig支援
+ -fontconfig 編譯系統中的FontConfig支援
-no-strip 不對二進位制檔案和庫的使用strip去除不需要的符號.
* -strip 在安裝時對二進位制檔案和庫的使用strip去除不需要的符號
* -no-pch 不使用預編譯的頭支援.
-pch 使用預編譯的頭支援.
* -no-ltcg 不使用連結時程式碼生成
-ltcg 使用連結時程式碼生成.
-no-dbus 不要編譯Qt D-Bus 模組.
+ -dbus-linked 編譯Qt D-Bus模組並連結到libdbus-1.
-dbus-runtime 編譯Qt D-Bus模組並動態載入libdbus-1.
-reduce-relocations 減少通過額外的連結器優化庫的重載入 ,(僅qt/X11 和Qt/linux嵌入式 ;實驗性的;需要 GNU ld > = 2.18)
-no-use-gold-linker 不要使用GNU gold linker進行連結.
+ -use-gold-linker 使用GNU gold linker進行連結.
-force-asserts 強制啟用Q_ASSERT,即使在release構建中.

sanitize[address/thread

/memory/undefined]

啟用指定編譯器的sanitizer.
-device <name> 跨平臺編譯<name>裝置 (試驗性)
-device-option <key=value> 新增device mkspec的device選項 (試驗性)
* -no-separate-debug-info 不將除錯資訊儲存在一個單獨的檔案
-separate-debug-info 將除錯資訊到一個單獨的檔案
-no-xcb 不要編譯Xcb (X protocol C-language Binding) 支援.
* -xcb 編譯 Xcb 支援.
-no-eglfs 不要編譯EGLFS (EGL Full Screen/Single Surface) 支援.
* -eglfs 編譯 EGLFS 支援.
-no-kms 不要編譯KMS的後端.
* -kms 編譯 KMS的後端.
-no-gbm 不要編譯 GBM 的後端.
* -gbm 編譯 GBM的後端.
-no-directfb 不要編譯 DirectFB 支援.
* -directfb 編譯 DirectFB 支援.
-no-linuxfb 不要編譯Linux Framebuffer 支援.
* -linuxfb 編譯 Linux Framebuffer 支援.
* -no-mirclient 不要編譯 Mir client 支援.
-mirclient 編譯 Mir client 支援.
-qpa <name> 設定預設的QPA 平臺 (示例 xcb, cocoa, windows).
-xplatform target 指定目標平臺(在跨平臺編譯時)
-sysroot <dir> <dir>設定為目標編譯器和 qmake 的 sysroot 並且也設定 pkg-confing路徑.
-no-gcc-sysroot 當使用-sysroot時, 它禁用將–sysroot傳遞到編譯器
-no-feature-<feature> <feature>中的不編譯.
-feature-<feature> 編譯<feature>中的. 可用的功能介紹在src/corelib/global/qfeatures.txt
-qconfig local 使用src/corelib/global/qconfig-local.h ,而不是預設的(全部).
-qreal [double/float] 為qreal指定型別.預設值是double。請注意,更改此標誌影響二進位制相容性。
-no-opengl 禁用OpenGL支援.
-opengl <api> 啟用 OpenGL 支援.不帶引數時,這將會嘗試自動檢測的 OpenGL ES 2.0 和更高版本,或常規的桌面版OpenGL. 使用 es2 的<api>將替代自動檢測
-no-libinput 禁用libinput支援.
* -libinput 啟用libinput 支援.
-no-gstreamer 禁用GStreamer支援.
+ -gstreamer <version> 啟用 GStreamer 支援。不帶引數,這將會嘗試自動檢測 GStreamer 0.10 和 1.0。GStreamer 1.0 是預設使用的可用時。使用 0.10 或 1.0 <version>來覆蓋自動檢測。
* -no-system-proxies 預設情況下,不使用系統網路代理
-system-proxies 預設情況下,使用系統網路代理
-no-warnings-are-errors Make 時把warnings當做正常
-warnings-are-errors Make時把warnings 當做錯誤 (如果啟用了-developer-build)

QNX/Blackberry 選項:

選項 作用
-no-slog2 不編譯 slog2 的支援
-slog2 編譯 slog2 的支援
-no-pps 不編譯 pps 的支援
-pps 編譯 pps 的支援
-no-imf 不編譯 imf 的支援
-imf 編譯 imf 的支援
-no-lgmon 不編譯 lgmon 的支援
-lgmon 編譯 lgmon 的支援

Android 選項:

選項 作用
-android-sdk path Android SDK 根目錄 
(預設 $ANDROID_SDK_ROOT)
-android-ndk path Android NDK 根目錄. 
(預設 $ANDROID_NDK_ROOT)
-android-ndk-platform 設定android 平臺版本 
(預設 android-9)
-android-ndk-host 設定android NDK 主機型別 (linux-x86, linux-x86_64, etc.) 
(預設 $ANDROID_NDK_HOST)
-android-arch 設定android 體系結構 (armeabi, armeabi-v7a, x86, mips, arm64-v8a, x86_64, mips64) 
(預設 armeabi-v7a)
-android-toolchain-version 設定android 工具鏈版本 
(預設 4.9)
-no-android-style-assets 不編譯 通過執行時裝置自動提取style-assets的程式碼. 
設定這將使Android風格的行為不當,但與lgpl2.1許可相容
* -android-style-assets 編譯 通過執行時裝置自動提取style-assets的程式碼.
此選項將使Android平臺的