如何为不同平台交叉编译Qt应用程序

9
如何在Qt上交叉编译我的应用程序,对于每个项目,我需要两个版本:
1)在Qvfb和i386架构的计算机上运行的版本。
2)在带有Linux Framebuffer和ARM架构的设备上运行的版本。
我已经为设备和Qvfb编译了Qt。我能够在两个平台上运行示例,但是我该如何交叉编译我的应用程序呢?我希望输出分别保存在不同的目录中,也就是i386的输出保存在output-i386平台中,ARM的输出保存在output-ARM目录中。
我正在使用Qt 4.6的嵌入式Linux版本。
3个回答

4
您可以在您的.pro文件中简单地设置DESTDIR。请参见qmake变量参考。您可能还想调整OBJECTS_DIRUI_DIRMOC_DIRRCC_DIR变量。

一定要调整其他目录。否则,您可能会尝试将为一个平台构建的对象链接到为另一个平台构建的可执行文件中。 - Caleb Huitt - cjhuitt

2

Qt从mkspec文件中获取所有平台特定的细节。

使用qmake的-spec命令行参数指定mkspec文件进行交叉编译。

在mkspec文件中,有许多定义可以用于为不同平台自定义编译,例如我可以使用DESTDIR将最终输出文件发送到特定目录,OBJECTS_DIR将对象文件发送到特定目录,MOC_DIR将moc生成的文件发送到特定目录,UI_DIR将uic生成的头文件和cpp文件发送到特定目录。


2
这篇文章的结尾展示了如何在工作目录中更改qmake(需要先运行make destclean)。另一篇文章概述了基本的嵌入式Linux环境下的Qt,以便让你有一个整体的了解。请参考:此文章此文章

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接