彩票走势图

跨平台C++开发框架Qt教程:如何在Visual Studio中创建嵌入式Qt quick应用程序

翻译|使用教程|编辑:鲍佳佳|2020-09-27 15:35:23.780|阅读 698 次

概述: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 Tools > Qt Options”,然后在“ Qt版本”选项卡上按“Add”。
  • 提供名称和Qt安装的路径。

在Qt VS工具中注册Windows版Qt

现在,我们将注册驻留在WSL实例中的Qt的交叉编译版本。

  • 再次在“ Qt版本”选项卡上按“add”以打开“Add New Qt Version”对话框。
  • 将“Build Host”设置为“ Linux WSL”。(如果我们使用的是物理构建主机,而不是通过WSL使用虚拟构建主机,则可以选择“ Linux SSH”。)
  • 提供Qt安装的名称和路径,以及要使用的编译器(默认为g ++)。在这里,我们将提供交叉编译器的路径。

为Raspberry Pi注册Qt版本

创建一个多平台的Qt Quick项目

在注册了将要使用的Qt版本之后,我们现在可以创建一个Qt项目。

  • 选择“ File > New > Project”以打开“ Visual Studio”对话框以创建新项目
  • 在项目模板搜索中输入“ qt”,然后选择“ Qt Quick Application”
  • 按“Next”;提供项目的名称和位置,然后按“Create”。
  • “Qt Quick Application Wizard”对话框将打开。按“Next >>”进行配置设置。
  • 为Windows和Qt的Raspberry Pi版本添加项目配置。

新项目配置

按“Finish”以完成项目创建向导。Visual Studio现在应该显示新的多平台Qt Quick项目。选择Windows配置,然后按F5键构建并运行该应用程序。然后应打开带有“ Hello World”标题的空窗口。

使用WSL在Visual Studio中交叉编译

使用WSL实例运行交叉编译器比使用SSH连接到构建主机更快。使用SSH时,MSBuild必须首先将源文件上传到远程主机。另一方面,WSL将在中安装本地驱动器/mnt,从而使文件访问瞬间完成。在这种情况下,MSBuild将Windows路径映射到根于的相应Linux路径/mnt,例如:

  • C:\include\foolib maps to /mnt/c/include/foolib ✔️

MSBuild将假定属性页中提供的路径是本地路径,并将它们映射到/mnt。在属性页中使用绝对Linux路径时,这可能导致错误的映射,例如:

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

为了避免这个问题,我们将在/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部分中,我们将研究:

  • 部署和运行应用程序
  • QML中的应用程序代码
  • 在目标设备中调试

未完待续。。。。。。。

本篇文章中的内容你都学会了吗?如果这篇文章没能满足你的需求、点击获取更多文章教程!现在立刻下载Qt免费试用吧!更多Qt类开发工具QtitanRibbonQtitanChartQtitanNavigationQtitanDockingQtitanDataGrid在线订购现直降1000元,欢迎咨询慧都获取更多优惠>>


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn

文章转载自:

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP