• <menu id="w2i4a"></menu>
  • logo Qt使用教程

    文檔首頁(yè)>>Qt使用教程>>跨平臺(tái)C++開(kāi)發(fā)框架Qt教程:如何在Visual Studio中創(chuàng)建嵌入式Qt quick應(yīng)用程序

    跨平臺(tái)C++開(kāi)發(fā)框架Qt教程:如何在Visual Studio中創(chuàng)建嵌入式Qt quick應(yīng)用程序


    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)行?,F(xiàn)在我們?yōu)槟闾峁┝嗣赓M(fèi)的試用版。趕快點(diǎn)擊下載Qt最新試用版>>

    點(diǎn)擊獲取更多文章教程

    Qt Visual Studio工具現(xiàn)在支持 Qt項(xiàng)目的交叉編譯。由于Qt / MSBuild和Linux開(kāi)發(fā)VS工作負(fù)載的集成,使其成為可能。在本文中,我們將展示如何使用此功能在Visual Studio中通過(guò)Qt Quick創(chuàng)建嵌入式應(yīng)用程序。

    我們將開(kāi)發(fā)用于在鏡像屏幕上顯示公共信息的應(yīng)用程序。這些是在休息區(qū),洗手間等安裝的一部分。該應(yīng)用程序?qū)⒃谇度胧絃inux的設(shè)備上運(yùn)行。在本文中,我們將使用運(yùn)行Raspbian(Buster)的Raspberry Pi 3 ModelB。


    我們?cè)谀繕?biāo)設(shè)備上運(yùn)行Qt Quick嵌入式應(yīng)用程序

    準(zhǔn)備開(kāi)發(fā)環(huán)境

    開(kāi)發(fā)主機(jī)將是Windows 10計(jì)算機(jī)。必須安裝Visual Studio 2019,包括桌面開(kāi)發(fā)和Linux開(kāi)發(fā)工作負(fù)載。

    所需的Visual Studio工作負(fù)載

    我們將在Windows Linux子系統(tǒng)(WSL)的實(shí)例中運(yùn)行交叉編譯器。設(shè)置開(kāi)發(fā)環(huán)境的下一步是啟用WSL并安裝Linux發(fā)行版。然后應(yīng)該可以打開(kāi)終端窗口并運(yùn)行Linux命令。

    user@buildhost:~$ uname -srvo
    Linux 4.4.0-18362-Microsoft #836-Microsoft Mon May 05 16:04:00 PST 2020 GNU/Linux
    user@buildhost:~$

    WSL中的命令行外殼

    要使用Qt Visual Studio工具,必須至少有一個(gè)Windows版Qt安裝可用。出于測(cè)試目的,這還將允許在開(kāi)所發(fā)的應(yīng)用程序上運(yùn)行。

    開(kāi)發(fā)環(huán)境概述

    交叉編譯Qt

    現(xiàn)在,我們可以繼續(xù)設(shè)置交叉編譯器。我們可以安裝預(yù)構(gòu)建的工具鏈,也可以編譯自己的工具鏈。如果一切順利,那么我們應(yīng)該能夠在設(shè)備上運(yùn)行一個(gè)簡(jiǎn)單的程序。

    user@buildhost:~$ echo "#include " > main.cpp
    user@buildhost:~$ echo "int main() {" >> main.cpp
    user@buildhost:~$ echo "std::cout << \"Hello World from Raspberry Pi\\n\";" >> main.cpp
    user@buildhost:~$ echo "return 0;" >> main.cpp
    user@buildhost:~$ echo "}" >> main.cpp
    user@buildhost:~$ /opt/cross-pi-gcc-8.3.0/bin/arm-linux-gnueabihf-g++ main.cpp
    user@buildhost:~$ scp a.out pi@192.168.1.99:/home/pi
    pi@192.168.1.99's password:
    a.out    100% 12KB 218.1KB/s 00:00
    user@buildhost:~$ ssh pi@192.168.1.99 ./a.out
    pi@192.168.1.99's password:
    Hello World from Raspberry Pi
    user@buildhost:~$

    在Raspberry Pi上運(yùn)行“ Hello World”

    我們準(zhǔn)備為Raspberry Pi構(gòu)建Qt。為此,我們將遵循“spberryPi2EGLFS — A modern guide for cross-compiling Qt for HW accelerated OpenGL with eglfs on Raspbian and setting up Qt Creator”教程。構(gòu)建完成后,我們應(yīng)該能夠在Raspberry Pi上運(yùn)行示例Qt應(yīng)用程序。


    user@buildhost:~$ echo "#include " > main.cpp user@buildhost:~$ echo "int main() {" >> main.cpp user@buildhost:~$ echo "qInfo() << \"Hello World with Qt version\" << qVersion();" >> main.cpp user@buildhost:~$ echo "return 0;" >> main.cpp user@buildhost:~$ echo "}" >> main.cpp user@buildhost:~$ echo "SOURCES += main.cpp" > hello.pro user@buildhost:~$ raspi/qt5/bin/qmake user@buildhost:~$ make -s user@buildhost:~$ scp hello pi@192.168.1.99:/home/pi pi@192.168.1.99's password: hello 100% 12KB 359.6KB/s 00:00 user@buildhost:~$ ssh pi@192.168.1.99 ./hello pi@192.168.1.99's password: Hello World with Qt version 5.12.9 user@buildhost:~$
    user@buildhost:~$ echo "int main() {" >> main.cpp
    user@buildhost:~$ echo "qInfo() << \"Hello World with Qt version\" << qVersion();" >> main.cpp
    user@buildhost:~$ echo "return 0;" >> main.cpp
    user@buildhost:~$ echo "}" >> main.cpp
    user@buildhost:~$ echo "SOURCES += main.cpp" > hello.pro
    user@buildhost:~$ raspi/qt5/bin/qmake
    user@buildhost:~$ make -s
    user@buildhost:~$ scp hello pi@192.168.1.99:/home/pi
    pi@192.168.1.99's password:
    hello 100% 12KB 359.6KB/s 00:00
    user@buildhost:~$ ssh pi@192.168.1.99 ./hello
    pi@192.168.1.99's password:
    Hello World with Qt version 5.12.9
    user@buildhost:~$


    在Raspberry Pi上運(yùn)行Qt示例應(yīng)用程序

    設(shè)置Qt Visual Studio工具

    要從IDE 安裝Qt Visual Studio工具,請(qǐng)打開(kāi)Extensions > Manage Extensions。搜索“ qt”:結(jié)果應(yīng)顯示“ Qt Visual Studio Tools”擴(kuò)展名;選擇它,然后按“下載”。關(guān)閉VS,然后按照安裝說(shuō)明進(jìn)行操作。重新打開(kāi)VS后,Qt Visual Studio工具應(yīng)該可用。

    Qt Visual Studio工具菜單

    要使用Qt Visual Studio Tools,我們必須首先注冊(cè)將要使用的Qt版本。我們將從為Windows注冊(cè)Qt開(kāi)始。

    • 打開(kāi)“Qt VS Tools > Qt Options”,然后在“ Qt版本”選項(xiàng)卡上按“Add”。
    • 提供名稱(chēng)和Qt安裝的路徑。

    在Qt VS工具中注冊(cè)Windows版Qt

    現(xiàn)在,我們將注冊(cè)駐留在WSL實(shí)例中的Qt的交叉編譯版本。

    • 再次在“ Qt版本”選項(xiàng)卡上按“add”以打開(kāi)“Add New Qt Version”對(duì)話框。
    • 將“Build Host”設(shè)置為“ Linux WSL”。(如果我們使用的是物理構(gòu)建主機(jī),而不是通過(guò)WSL使用虛擬構(gòu)建主機(jī),則可以選擇“ Linux SSH”。)
    • 提供Qt安裝的名稱(chēng)和路徑,以及要使用的編譯器(默認(rèn)為g ++)。在這里,我們將提供交叉編譯器的路徑。

    為Raspberry Pi注冊(cè)Qt版本

    創(chuàng)建一個(gè)多平臺(tái)的Qt Quick項(xiàng)目

    在注冊(cè)了將要使用的Qt版本之后,我們現(xiàn)在可以創(chuàng)建一個(gè)Qt項(xiàng)目。

    • 選擇“ File > New > Project”以打開(kāi)“ Visual Studio”對(duì)話框以創(chuàng)建新項(xiàng)目
    • 在項(xiàng)目模板搜索中輸入“ qt”,然后選擇“ Qt Quick Application”
    • 按“Next”;提供項(xiàng)目的名稱(chēng)和位置,然后按“Create”。
    • “Qt Quick Application Wizard”對(duì)話框?qū)⒋蜷_(kāi)。按“Next >>”進(jìn)行配置設(shè)置。
    • 為Windows和Qt的Raspberry Pi版本添加項(xiàng)目配置。

    新項(xiàng)目配置

    按“Finish”以完成項(xiàng)目創(chuàng)建向?qū)?。Visual Studio現(xiàn)在應(yīng)該顯示新的多平臺(tái)Qt Quick項(xiàng)目。選擇Windows配置,然后按F5鍵構(gòu)建并運(yùn)行該應(yīng)用程序。然后應(yīng)打開(kāi)帶有“ Hello World”標(biāo)題的空窗口。

    使用WSL在Visual Studio中交叉編譯

    使用WSL實(shí)例運(yùn)行交叉編譯器比使用SSH連接到構(gòu)建主機(jī)更快。使用SSH時(shí),MSBuild必須首先將源文件上傳到遠(yuǎn)程主機(jī)。另一方面,WSL將在中安裝本地驅(qū)動(dòng)器/mnt,從而使文件訪問(wèn)瞬間完成。在這種情況下,MSBuild將Windows路徑映射到根于的相應(yīng)Linux路徑/mnt,例如:

    • C:\include\foolib maps to /mnt/c/include/foolib ??

    MSBuild將假定屬性頁(yè)中提供的路徑是本地路徑,并將它們映射到/mnt。在屬性頁(yè)中使用絕對(duì)Linux路徑時(shí),這可能導(dǎo)致錯(cuò)誤的映射,例如:

    • /home/user/raspi maps to /mnt/home/user/raspi ?

    為了避免這個(gè)問(wèn)題,我們將在/mnt中創(chuàng)建指向WSL實(shí)例文件系統(tǒng)中其他頂層目錄的符號(hào)鏈接。

    user@buildhost:/mnt$ sudo ln -s /home home
    user@buildhost:/mnt$ ls -go
    total 0
    drwxrwxrwx 1 4096 Sep 1 15:29 c
    drwxrwxrwx 1 4096 Sep 1 15:29 d
    drwxrwxrwx 1 4096 Sep 1 15:29 e
    lrwxrwxrwx 1 5 Sep 1 17:10 home -> /home
    user@buildhost:/mnt$

    在中創(chuàng)建符號(hào)鏈接 /mnt

    現(xiàn)在,我們可以交叉編譯該項(xiàng)目了。選擇一個(gè)Linux配置,然后按F7鍵開(kāi)始構(gòu)建。

    1>------ Rebuild All started: Project: QuickMirror, Configuration: Release_RPi x64 ------
    1>Invoking 'mkdir -p $(dirname /mnt/c/Users/user/Source/Repos/QuickMirror/obj/x64/Release_RPi/qmake/temp/props.txt); mkdir -p /mnt/c/Users/user/Source/Repos/QuickMirror/obj/x64/Release_RPi/qmake/temp; cd /mnt/c/Users/user/Source/Repos/QuickMirror/obj/x64/Release_RPi/qmake/temp; ("/home/user/raspi/qt5/bin/qmake" -query) 1> props.txt', working directory: '/mnt/c/Users/user/Source/Repos/QuickMirror'
    1>Reading Qt configuration (/home/user/raspi/qt5/bin/qmake)
    1>Invoking 'mkdir -p $(dirname /mnt/c/Users/user/Source/Repos/QuickMirror/obj/x64/Release_RPi/qmake/temp/qtvars.pro); mkdir -p $(dirname /mnt/c/Users/user/Source/Repos/QuickMirror/obj/x64/Release_RPi/qmake/temp/Makefile); mkdir -p $(dirname /mnt/c/Users/user/Source/Repos/QuickMirror/obj/x64/Release_RPi/qmake/temp/qtvars.log); mkdir -p /mnt/c/Users/user/Source/Repos/QuickMirror/obj/x64/Release_RPi/qmake/temp; cd /mnt/c/Users/user/Source/Repos/QuickMirror/obj/x64/Release_RPi/qmake/temp; ("/home/user/raspi/qt5/bin/qmake" "CONFIG -= debug release debug_and_release" "CONFIG += release" qtvars.pro) 1> qtvars.log 2>&1', working directory: '/mnt/c/Users/user/Source/Repos/QuickMirror'
    1>rcc qml.qrc
    1>Invoking 'mkdir -p $(dirname qml.qrc); mkdir -p $(dirname /mnt/c/Users/user/Source/Repos/QuickMirror/main.qml); mkdir -p $(dirname /mnt/c/Users/user/Source/Repos/QuickMirror/obj/x64/Release_RPi/rcc/qrc_qml.cpp); (/home/user/raspi/qt5/bin/rcc /mnt/c/Users/user/Source/Repos/QuickMirror/qml.qrc --name qml -o /mnt/c/Users/user/Source/Repos/QuickMirror/obj/x64/Release_RPi/rcc/qrc_qml.cpp)', working directory: '/mnt/c/Users/user/Source/Repos/QuickMirror'
    1>Starting remote build
    1>Compiling sources:
    1>main.cpp
    1>qrc_qml.cpp
    1>Linking objects
    1>QuickMirror.vcxproj -> C:\Users\user\Source\Repos\QuickMirror\bin\x64\Release_RPi\QuickMirror.out
    1>Done building project "QuickMirror.vcxproj".
    ========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ==========

    VS中的交叉編譯Qt項(xiàng)目

    接下來(lái)

    總而言之,我們?cè)赩isual Studio中創(chuàng)建了一個(gè)多平臺(tái)的Qt Quick項(xiàng)目,并使用交叉編譯器為Raspberry Pi構(gòu)建了該項(xiàng)目。在第2部分中,我們將研究:

    • 部署和運(yùn)行應(yīng)用程序
    • QML中的應(yīng)用程序代碼
    • 在目標(biāo)設(shè)備中調(diào)試

    未完待續(xù)。。。。。。。

    本篇文章中的內(nèi)容你都學(xué)會(huì)了嗎?如果這篇文章沒(méi)能滿足你的需求、點(diǎn)擊獲取更多文章教程!現(xiàn)在立刻下載Qt免費(fèi)試用吧!更多Qt類(lèi)開(kāi)發(fā)工具QtitanRibbon、QtitanChartQtitanNavigation、QtitanDockingQtitanDataGrid在線訂購(gòu)現(xiàn)直降1000元,歡迎咨詢慧都在線客服獲取更多優(yōu)惠>>

    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();