创建一个开箱即用的可移植、跨平台、开源 C++ GUI 应用程序?
Posted
技术标签:
【中文标题】创建一个开箱即用的可移植、跨平台、开源 C++ GUI 应用程序?【英文标题】:Creating a portable, cross-platform, open-source C++ GUI application that works out of the box? 【发布时间】:2015-09-21 04:33:08 【问题描述】:我一直在环顾四周,看看我将如何完成标题中描述的事情。也就是说,我想创建一个 C++ GUI 应用程序:
便携(无需安装程序) 是跨平台的(Qt 解决了这个问题) 是开源的 开箱即用(即无需安装 C++ 可再发行组件)我在尝试完成此操作时遇到了几个问题。我已将其范围缩小到使用 Qt 而不是使用 Visual Studio 编译器。让我解释一下。
使用 Qt 将满足跨平台需求;它在 C++ GUI 应用程序方面也备受好评。问题在于可移植性,并且在能够使用应用程序之前没有安装大量的依赖包。我的目标是让某人下载一个包含 .exe 的 .zip 文件(如果需要,我愿意包含其他支持文件,例如 DLL),并且能够开箱即用地提取和运行该 exe,而无需这样做还有什么。
还有一个问题:尽管我很想使用 Visual Studio(带有 Qt Visual Studio 插件),但考虑到我的要求,它似乎并不可行。 This post 很好地解决了我的问题。简而言之,如果我使用 Visual Studio 编译器,我需要创建一个安装程序(不再是便携式应用程序),使用应用程序重新分发一些 Microsoft DLL(这里可能存在许可和重新分发问题?),或者静态链接 Visual将 C++ 库添加到可执行文件中(对技术不满意)。
有没有什么方法可以使用 Visual Studio 并满足上面列出的要求? Visual Studio 功能太齐全了,不容错过。如果不可能,我认为唯一的其他选择是使用不同的 IDE 和/或编译器。例如,我可以将 QtCreator 与 MinGW 一起使用,但我会失去一些很棒的 VS 调试功能。
我的主要问题:
有什么方法可以满足上述要求并仍然使用 Visual Studio? QtCreator 的功能不如 Visual Studio,我错了吗? 满足我的申请要求的最佳方法是什么?提前致谢。
【问题讨论】:
如果您的代码是可移植的 C++,您可以在 VS 中开发并使用 MinGW 构建和部署。使用 TDD,您可以在任何平台上一步构建和测试。 第一次听说静态链接runtime-library应该不被接受。 C++ 的 GUI 存在一般问题,没有标准,没有好的设计(所有的 GUI 库都有自己的 XxxxString 类,太糟糕了)。 Visual Studio >= Community 可以生成静态链接的 MFC(但不可移植,非常古老,封闭源代码)。对于基于 ATL/WTL(停止开发,开源)但运行时间极低的小型应用程序模板。作为 Linux/Opensource(GTK/Qt 等)而生,具有依赖项和/或非本机小部件。在我看来,带有 GUI 的 C++ 慢慢走向了小众市场。 这个问题需要主观回答。我认为不符合 SO 准则。 【参考方案1】:我认为最好的办法是在 MinGW 环境中使用 QT。它允许您创建一个可移植的应用程序,它自己提供运行时 DLL,并具有完全开源的额外好处。 QT 在线安装程序为您提供了安装完整 MinGW 系统的选项,它可以开箱即用,无需太多设置。
您仍然可以使用 Visual Studio 进行开发;甚至还有一个 QT 插件(我不确定是否支持 VS2015,但如果不支持,那应该只需要一些时间)。
QTCreator 实际上是一个相当不错的 IDE,但它无法与 Visual Studio 抗衡。它显然是为了迎合 QT 程序员的需求而优化的,但我发现它有时相当笨重。如果您的项目很小,它可能是一个可行的选择,但由于 Visual Studio 2015 社区基本上是免费的,我会选择它。 VS 插件仍然会使用 QTCreator 的 GUI 编辑器(这真的很好)
【讨论】:
以上是关于创建一个开箱即用的可移植、跨平台、开源 C++ GUI 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章