翻譯|產(chǎn)品更新|編輯:鮑佳佳|2020-10-14 13:48:38.223|閱讀 4852 次
概述:您可以在使用qmake或CMake構(gòu)建Qt之間進(jìn)行選擇。通過(guò)-cmake配置以使用基于CMake的生成。對(duì)于最終版本,預(yù)計(jì)qmake構(gòu)建系統(tǒng)將隨著pass-cmake的需要而消失。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
Qt是一個(gè)跨平臺(tái)框架,通常用作圖形工具包,它不僅創(chuàng)建CLI應(yīng)用程序中非常有用。而且它也可以在三種主要的臺(tái)式機(jī)操作系統(tǒng)以及移動(dòng)操作系統(tǒng)(如Symbian,Nokia Belle,Meego Harmattan,MeeGo或BB10)以及嵌入式設(shè)備,Android(Necessitas)和iOS的端口上運(yùn)行。現(xiàn)在我們?yōu)槟闾峁┝嗣赓M(fèi)的試用版。趕快點(diǎn)擊下載Qt最新試用版吧>>
【Qtitan組件集】
CMake:
用于構(gòu)建Qt的CMake 3.18.4最近發(fā)布了!
使用配置或普通CMake
目前,qmake構(gòu)建系統(tǒng)仍然存在。您可以在使用qmake或CMake構(gòu)建Qt之間進(jìn)行選擇。通過(guò)-cmake配置以使用基于CMake的生成。
對(duì)于最終版本,預(yù)計(jì)qmake構(gòu)建系統(tǒng)將隨著pass-cmake的需要而消失。
例如,以下調(diào)用將Qt配置為安裝到?/ Qt / 6.0.0,并關(guān)閉對(duì)QLCDNumber窗口小部件的支持,并跳過(guò)qtsvg存儲(chǔ)庫(kù):
configure -cmake -prefix /opt/Qt/6.0.0 -no-feature-lcdnumber -skip qtsvg
配置腳本將這些參數(shù)轉(zhuǎn)換為以下CMake調(diào)用:
cmake -GNinja -DCMAKE_INSTALL_PREFIX=/opt/Qt/6.0.0 -DFEATURE_lcdnumber=OFF -DBUILD_qtsvg=OFF /path/to/qt/sources
這是一個(gè)很詳盡的說(shuō)明,并說(shuō)明了我們的configure腳本的有用性。
使用configure,我們可以在--參數(shù)之后將額外的參數(shù)傳遞給CMake 。上面的configure調(diào)用與此等效:
configure -cmake -prefix ~/Qt/6.0.0 -no-feature-lcdnumber -- -DBUILD_qttools=OFF
配置后,使用cmake --build .或ninja構(gòu)建項(xiàng)目。
我們建議使用CMake的Ninja生成器。這也是配置的默認(rèn)值。
可以通過(guò)傳遞-CMake generator
使用cmake --install .安裝Qt。
交叉編譯Qt
要使用CMake交叉編譯項(xiàng)目,必須指定一個(gè)工具鏈文件。這個(gè)CMake語(yǔ)言文件為平臺(tái)名稱,使用的編譯器/鏈接器以及其他許多特定于工具鏈的東西設(shè)置正確的值。
工具鏈文件的概念類似于qmake的mkspecs。
讓我們看看如何在Linux上構(gòu)建Qt的Android版本。
configure -cmake -prefix /opt/Qt/6.0.0-android \ -qt-host-path /opt/Qt/6.0.0 \ -xplatform android-clang \ -android-ndk ~/Android/android-sdk-tools/ndk-bundle \ -android-sdk ~/Android/android-sdk-tools \ -android-abis armeabi-v7a
最顯著的區(qū)別是-qt主機(jī)路徑選項(xiàng)。要交叉構(gòu)建Qt,您需要指向主機(jī)平臺(tái)已經(jīng)存在的本機(jī)構(gòu)版本這被稱為主機(jī)Qt。
所有本地主機(jī)工具,如moc、rcc和uic都是從那里運(yùn)行的。
在Qt5中,我們?yōu)槊總€(gè)交叉構(gòu)建重新構(gòu)建了宿主工具。從現(xiàn)有的主機(jī)Qt安裝中重新使用主機(jī)工具可以避免我們反復(fù)為每個(gè)交叉構(gòu)建構(gòu)建構(gòu)建主機(jī)工具,并大大簡(jiǎn)化了Qt的構(gòu)建系統(tǒng)。
交叉編譯Qt不會(huì)為目標(biāo)平臺(tái)生成宿主工具,除非將CMake變量Qt_build_tools_設(shè)置為ON。在嵌入式Linux環(huán)境中這樣做很有用。
-xplatformandroid-clang參數(shù)只影響為這個(gè)交叉構(gòu)建提供qmake支持而生成的相關(guān)文件。
android ndk參數(shù)指向ndk并選擇位于其中的CMake工具鏈文件。
-android-sdk參數(shù)指向sdk。
android abis參數(shù)選擇我們要構(gòu)建的ABI。請(qǐng)注意,多ABI構(gòu)建尚未實(shí)現(xiàn)。
為了將所有內(nèi)容放在一起,上面的configure調(diào)用被轉(zhuǎn)換為以下CMake調(diào)用:
cmake -DQT_HOST_PATH=/opt/Qt/6.0.0 \ -DQT_QMAKE_TARGET_MKSPEC=android-clang \ -DANDROID_SDK_ROOT=/home/jobor/Android/android-sdk-tools \ -DCMAKE_TOOLCHAIN_FILE=/home/jobor/Android/android-sdk-tools/ndk-bundle/build/cmake/android.toolchain.cmake \ -DANDROID_ABI=armeabi-v7a \ -DCMAKE_INSTALL_PREFIX=/opt/Qt/6.0.0-android \ -G Ninja \ /path/to/qt/source
同樣,用cmake --build .或進(jìn)行構(gòu)建ninja。
使用cmake --install .安裝的Qt。
建立基于Qt的項(xiàng)目
一旦安裝了Qt,就可以使用CMake或qmake來(lái)構(gòu)建項(xiàng)目。
qmake一切照舊:
mkdir ~/my-project-build cd ~/my-project-build /opt/Qt/6.0.0/bin/qmake make
注意:這也適用于跨版本。那里,qmake是一個(gè)包裝腳本,它使用生成的qt.conf調(diào)用主機(jī)Qt的qmake可執(zhí)行文件,該文件設(shè)置正確的路徑和mkspec。
Qt帶有一個(gè)名為qt-cmake的包裝腳本,可為CMake提供類似的體驗(yàn):
mkdir ~/my-project-build cd ~/my-project-build /opt/Qt/6.0.0/bin/qt-cmake cmake --build .
qt-cmake使用CMAKE_TOOLCHAIN_FILE設(shè)置為Qt內(nèi)部工具鏈文件的變量調(diào)用CMake,該文件設(shè)置正確的編譯器并在交叉編譯的情況下鏈?zhǔn)郊虞d“實(shí)際”工具鏈文件。
注意:如果您發(fā)現(xiàn)需要鏈?zhǔn)郊虞d其他工具鏈文件,請(qǐng)傳遞-DQT_CHAINLOAD_TOOLCHAIN_FILE=
QT-cmake的并沒(méi)有設(shè)置CMake的生成。如果您始終要使用Ninja(我們建議使用),請(qǐng)將環(huán)境變量設(shè)置CMAKE_GENERATOR為Ninja。
構(gòu)建Qt模塊
qt-configure-module與已安裝的Qt分開(kāi)構(gòu)建Qt模塊時(shí),它是首選工具。該qt-configure-module腳本采用與頂級(jí)Qt configure調(diào)用相同的參數(shù)-限于適用于我們當(dāng)前正在配置的模塊的參數(shù)。
在以下示例中,我們首先構(gòu)建并安裝qtbase,然后在關(guān)閉qml-network功能的情況下構(gòu)建qtdeclarative。
mkdir ~/dev/qt/qtbase-build cd ~/dev/qt/qtbase-build ../qtbase/configure -prefix /opt/Qt/6.0.0 cmake --build . cmake --install . mkdir ~/dev/qt/qtdeclarative-build cd ~/dev/qt/qtdeclarative-build /opt/Qt/6.0.0/bin/qt-configure-module ../qtdeclarative -no-qml-network cmake --build . cmake --install .
構(gòu)建獨(dú)立的測(cè)試和示例
有兩個(gè)好消息:
這是您構(gòu)建和運(yùn)行QProcess自動(dòng)測(cè)試的方式:
mkdir ~/dev/qt/tst_qprocess cd ~/dev/qt/tst_qprocess /opt/Qt/6.0.0/bin/qt-cmake-standalone-test ../qtbase/tests/auto/corelib/io/qprocess cmake --build . ctest -V
這使用了CMake附帶的ctest工具,但是您當(dāng)然也可以直接運(yùn)行可執(zhí)行文件。
構(gòu)建示例的方式類似:
mkdir ~/dev/qt/wiggly cd ~/dev/qt/wiggly /opt/Qt/6.0.0/bin/qt-cmake ../qtbase/examples/widgets/widgets/wiggly cmake --build . ./wiggly
我們希望您對(duì)CMake的轉(zhuǎn)換盡可能順利,并且Qt和CMake社區(qū)將彼此受益。
感謝您的閱讀,希望這篇文章能帶給你一定的幫助!如果這篇文章沒(méi)能滿足你的需求、點(diǎn)擊獲取更多文章教程!現(xiàn)在立刻下載Qt6免費(fèi)試用吧!更多Qt類開(kāi)發(fā)工具QtitanRibbon、QtitanChart、QtitanNavigation、QtitanDocking、QtitanDataGrid在線訂購(gòu)現(xiàn)直降1000元,歡迎咨詢慧都獲取更多優(yōu)惠>>
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自: