qt - 使用 Qt 进行“跨平台”开发的最佳实践

qt - 使用 Qt 进行“跨平台”开发的最佳实践

Qt 的标语是:

一次编写,到处编译。

考虑到这一点,Qt 并未正式提供任何开箱即用的解决方案,用于将 Qt 应用程序从特定平台交叉编译到其他不同平台。虽然绝对可行,但如果投入大量工作和时间,Qt 良好的常见做法会建议您直接在目标平台上构建 Qt 应用程序。这意味着,为您的应用程序构建 Windows 目标在 Windows 机器上,在 Mac 机器上构建 Mac 目标,在 Linux 机器上构建 Linux 目标,您猜对了(:-)),Linux 机器。

这就是“一次编写,到处编译”的方式,在我看来是一个非常好的单词组合。否则,标语可能是“编写一次,编译一切”。

回到最初的问题,您甚至不需要为每个目标平台使用不同的物理机,因为在当今良好的虚拟化解决方案时代,您可以轻松设置几个虚拟机并在不同平台上构建您的应用程序来自同一台物理机器。

至于您的问题未直接回答的其他问题:

我应该在所有三个平台上都安装 Qt Creator 吗?如果我这样做,我是否可以期望能够获取我使用 Qt Creator 为 Windows 开发的 Qt 项目(或者可能只是源代码),将其复制到我的 Mac 或 Linux 机器上,然后构建它那里使用该平台的 Qt Creator 版本,而不会遇到一些重大问题?

是的。小问题是诸如在所有三个主要平台(Windows、Linux、Mac)或 Mac Dock 高级集成或托盘栏两者之间的集成问题上让您的应用程序可执行/二进制图标。通过将特定于平台的代码正确封装在编译器指令中,例如#define,可以在不破坏代码的跨平台特性的情况下处理这些问题。我还建议对您的应用程序所需的所有其他平台特定代码这样做,或者如果您将广泛使用平台特定代码,将相关平台特定代码的整个块分成几个特定于每个平台的动态加载库(或共享库),但导出相同的抽象通用接口并根据需要加载/链接到它们。

与在单个开发主机上安装交叉编译工具相比,这甚至可能是使用 Qt 为多个平台创建可执行文件的最佳实践吗?

您应该尽可能使用 Qt SDK(Qt Creator 或命令行工具)来构建您的应用程序,因为像 qmake 这样的工具将承担在您的 Makefile 中手动处理 .moc 文件的负担。但是,如果由于某些原因而变得不可能,例如。就像您的公司强加 Visual Studio 开发(跨平台吧?)一样,有许多关于如何使用 MS Visual Studio、GNU autotools 或 CMake 等构建系统处理基于 Qt 的构建的教程。虽然我建议坚持使用 qmake,它是一个很好的“make makefile”生成器,并且很容易适应您可能需要正确构建应用程序的任何平台特定的 hack,而不是使用更适合平台特定 hack 的构建系统然后尝试满足 Qt 对这些构建系统的需求。

我希望我已经足够清楚和有帮助。

PS:我也欢迎就我在评论中写的内容提出建议或修复/补充。

💡 关键要点

Qt 的标语是: 一次编写,到处编译。 考虑到这一点,Qt 并未正式提供任何开箱即用的解决方案,用于将 Qt 应用程序从特定平台交叉编译到其他

更多疯狂内容

ps4游戏机哪款型号最好--PS4游戏机选购指南:哪款型号最适合您?
侠盗猎车手:罪恶都市苹果版下载-侠盗猎车手:罪恶都市苹果版ios最新下载v2.79
诗雅名字寓意及含义

诗雅名字寓意及含义

🔥 872 📅 08-15