Qt 虚拟帧缓冲

作者:Johan Thelin

Qt 附带了一个方便的工具,它在 tools/qvfb 目录中相当默默无闻。该工具在演示、培训用户和创建文档方面表现出色。

QVFb,或 Qt 虚拟帧缓冲,是一个工具,可以使 Qt 应用程序在一个屏幕分辨率有限、位深度有限以及输入能力有限的虚拟系统上运行。所有这些都在您的桌面(或笔记本电脑)PC 上完成,从而避免了跨平台调试、交叉编译、将文件传输到目标设备等麻烦。

QVFb 的诀窍不在于如何使用它,而在于如何构建它。有趣的是,我实际上就此发表过多次演讲。问题不是它难以构建,而是您必须构建两次 Qt 才能获得一个有效的工作环境。

构建 Qt 时,configure 脚本的结果是一个二进制文件:qmake。该二进制文件处理 *.pro 文件并构建特定于目标的 Makefiles。qmake 工具携带您的配置,因此如果您要以两个系统为目标,则必须运行“make distclean”,然后运行“qmake-target”,以便将您的项目瞄准特定目标(其中“qmake-target”可以是“qmake-x11”、“qmake-osx”、“qmake-arm-fb”等)。

有了这些知识,并在配置 Qt 时经过仔细考虑(不要忘记使用-prefix选项,以避免在一个目录中安装三个 Qt),构建 QVFb 相当容易。

在以嵌入式系统为目标时,我通常构建三个 Qt 实例——所有实例都具有大致相同的配置。这是为了确保我在 PC 上测试的内容也能在我的目标设备上运行。Qt 构建是

  • 用于主机/X11 的 Qt - 用于构建主机的 Qt 工具。
  • 用于目标/fb 的 Qt - 用于构建实际的目标文件。
  • 用于主机/qvfb 的 Qt - 用于构建 QVFb 的二进制文件。

用于主机/X11 的 Qt 很简单,只需像平常一样构建 Qt 即可。但是,构建完成后,cd 进入 tools/qvfb 并为 QVFb 执行“make && make install”。

用于目标/fb 的 Qt 可能完全是另一回事。为您的目标设备构建 Qt *通常*非常简单。但是,正如我们都知道的,细节决定成败。这种构建可以以多种方式进行调整,以至于这是我赖以生存的事情之一。

用于主机/qvfb 的 Qt 基本上是用于目标/fb 的 Qt,但针对的是主机。我还确保包括 QVFb 的图形和输入驱动程序。这意味着添加-qt-gfx-qvfb, -qt-kbd-qvfb-qt-mouse-qvfb到 configure 命令行。

构建并安装了所有这些版本的 Qt(在实验时,用于目标/fb 的 Qt 是可选的)后,您可以启动 QVFb,设置屏幕尺寸、位深度和输入限制。您还可以添加皮肤,例如,如果您的硬件包含带有按钮的框架。QVFb 可以将鼠标单击这些屏幕外按钮转换为键盘事件。设置好 QVFb 后,只需使用用于主机/qvfb 的 Qt 编译您的应用程序,并使用-qws开关作为参数启动它。现在,您正在主机上的虚拟帧缓冲中运行您的应用程序。

加载 Disqus 评论