翻譯|使用教程|編輯:鮑佳佳|2020-09-27 15:35:23.780|閱讀 794 次
概述:Qt Visual Studio工具現在支持 Qt項目的交叉編譯。由于Qt / MSBuild和Linux開發VS工作負載的集成,使其成為可能。在本文中,我們將展示如何使用此功能在Visual Studio中通過Qt Quick創建嵌入式應用程序。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
Qt是一個跨平臺框架,通常用作圖形工具包,它不僅創建CLI應用程序中非常有用。而且它也可以在三種主要的臺式機操作系統以及移動操作系統(如Symbian,Nokia Belle,Meego Harmattan,MeeGo或BB10)以及嵌入式設備,Android(Necessitas)和iOS的端口上運行。現在我們為你提供了免費的試用版。趕快點擊下載Qt最新試用版吧>>
Qt Visual Studio工具現在支持 Qt項目的交叉編譯。由于Qt / MSBuild和Linux開發VS工作負載的集成,使其成為可能。在本文中,我們將展示如何使用此功能在Visual Studio中通過Qt Quick創建嵌入式應用程序。
我們將開發用于在鏡像屏幕上顯示公共信息的應用程序。這些是在休息區,洗手間等安裝的一部分。該應用程序將在嵌入式Linux的設備上運行。在本文中,我們將使用運行Raspbian(Buster)的Raspberry Pi 3 ModelB。
我們在目標設備上運行Qt Quick嵌入式應用程序
準備開發環境開發主機將是Windows 10計算機。必須安裝Visual Studio 2019,包括桌面開發和Linux開發工作負載。
所需的Visual Studio工作負載
我們將在Windows Linux子系統(WSL)的實例中運行交叉編譯器。設置開發環境的下一步是啟用WSL并安裝Linux發行版。然后應該可以打開終端窗口并運行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工具,必須至少有一個Windows版Qt安裝可用。出于測試目的,這還將允許在開所發的應用程序上運行。
開發環境概述
交叉編譯Qt現在,我們可以繼續設置交叉編譯器。我們可以安裝預構建的工具鏈,也可以編譯自己的工具鏈。如果一切順利,那么我們應該能夠在設備上運行一個簡單的程序。
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上運行“ Hello World”
我們準備為Raspberry Pi構建Qt。為此,我們將遵循“spberryPi2EGLFS — A modern guide for cross-compiling Qt for HW accelerated OpenGL with eglfs on Raspbian and setting up Qt Creator”教程。構建完成后,我們應該能夠在Raspberry Pi上運行示例Qt應用程序。
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上運行Qt示例應用程序
設置Qt Visual Studio工具要從IDE 安裝Qt Visual Studio工具,請打開Extensions > Manage Extensions。搜索“ qt”:結果應顯示“ Qt Visual Studio Tools”擴展名;選擇它,然后按“下載”。關閉VS,然后按照安裝說明進行操作。重新打開VS后,Qt Visual Studio工具應該可用。
Qt Visual Studio工具菜單
要使用Qt Visual Studio Tools,我們必須首先注冊將要使用的Qt版本。我們將從為Windows注冊Qt開始。
在Qt VS工具中注冊Windows版Qt
現在,我們將注冊駐留在WSL實例中的Qt的交叉編譯版本。
為Raspberry Pi注冊Qt版本
創建一個多平臺的Qt Quick項目
在注冊了將要使用的Qt版本之后,我們現在可以創建一個Qt項目。
新項目配置
按“Finish”以完成項目創建向導。Visual Studio現在應該顯示新的多平臺Qt Quick項目。選擇Windows配置,然后按F5鍵構建并運行該應用程序。然后應打開帶有“ Hello World”標題的空窗口。
使用WSL在Visual Studio中交叉編譯使用WSL實例運行交叉編譯器比使用SSH連接到構建主機更快。使用SSH時,MSBuild必須首先將源文件上傳到遠程主機。另一方面,WSL將在中安裝本地驅動器/mnt,從而使文件訪問瞬間完成。在這種情況下,MSBuild將Windows路徑映射到根于的相應Linux路徑/mnt,例如:
MSBuild將假定屬性頁中提供的路徑是本地路徑,并將它們映射到/mnt。在屬性頁中使用絕對Linux路徑時,這可能導致錯誤的映射,例如:
為了避免這個問題,我們將在/mnt中創建指向WSL實例文件系統中其他頂層目錄的符號鏈接。
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$
在中創建符號鏈接 /mnt
現在,我們可以交叉編譯該項目了。選擇一個Linux配置,然后按F7鍵開始構建。
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項目
接下來
總而言之,我們在Visual Studio中創建了一個多平臺的Qt Quick項目,并使用交叉編譯器為Raspberry Pi構建了該項目。在第2部分中,我們將研究:
未完待續。。。。。。。
本篇文章中的內容你都學會了嗎?如果這篇文章沒能滿足你的需求、點擊獲取更多文章教程!現在立刻下載Qt免費試用吧!更多Qt類開發工具QtitanRibbon、QtitanChart、QtitanNavigation、QtitanDocking、QtitanDataGrid在線訂購現直降1000元,歡迎咨詢慧都獲取更多優惠>>
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自: