我正在为基于ARM的目标(TI AM335x EVM)进行Qt5.2应用程序的交叉编译,但它无法在我的平台上显示任何内容.做了一些google'ing之后,我发现如果我用以下方式启动它:
./helloworld -platform eglfs
它会出现(全屏,但它工作)!
我开始查看所有平台选项,我发现:
android,eglfs,linuxfb,minimalegl,windows,xcb,cocoa,ios,offscreen,qnx,directfp,kms,minimal,openwfd
我想知道他们是为了什么.我假设,例如,如果我想在Android设备上运行我的应用程序,我必须通过-platform android
,但它们对我来说并不是很明显.
是否应该使用每个参数的列表?
例如,什么eglfs
代表什么?为什么我需要使用那些linuxfb
不起作用的地方?
(我原本以为linux帧缓冲区是我想要启动我的应用程序,因为它在嵌入式linux上运行)
如果linuxfb
插件不起作用,那么您可能没有在系统上正确配置帧缓冲设备.也许一个directf层已经在运行,所以你可能想尝试一下directfb
插件.
如果您希望避免在运行可执行文件时指定platform选项,则可以configure
在构建Qt时将默认选项传递给它.
插件可以描述如下:
Linux插件 - 那些使用特定于Linux的输入设备和各种输出设备
eglfs - 在全屏模式下使用OpenGL ES.由于OpenGL没有窗口管理器的概念,所以别无他法.
directfb(not directfp) - 通过directfb层使用带有OpenGL ES的linux帧缓冲区.集成到directfb窗口中.
linuxfb - 在全屏模式下使用linux帧缓冲区.由于linuxfb没有窗口管理器的概念,所以别无选择.
kms - 在全屏模式下使用linux内核模式设置API.由于DRM没有窗口管理器的概念,因此没有其他办法.
openwfd - 在全屏模式下使用openwfd Wifi显示.没有其他办法,因为openwfd没有窗口管理器的概念.
独立于平台的插件 - 可以在任何操作系统上运行
xcb - 在X11服务器上运行,并集成到X11窗口环境中.通常,如果没有窗口管理器运行,它也不会正常运行.如果您想要将应用程序从Windows服务器提供给X11瘦终端(通常是Unix机箱),可以在Windows上实现xlib的Windows实现.
offscreen - 渲染到屏幕外缓冲区.用于渲染自定义显示.
minimal - 一个简约的后备存储,可选择将虚拟屏幕转储到文件中.实现最低限度的功能只是为了演示如何开始编写平台插件.
其他特定于平台的插件
android - 使用Android API并集成到Android环境中.
windows - 使用WINAPI并集成到Windows窗口环境中.
cocoa - 使用Cocoa API并集成到OS X窗口环境中.
iOS - 使用iOS工具包并集成到iOS环境中.
qnx - 使用QNX API并集成到QNX光子窗口环境中.