首页 > 解决方案 > 是否可以让 Visual Studio 2017 将 c++ 代码编译为 exe 以外的文件类型?

问题描述

最近我一直致力于使用 Visual C++ 2017 和 SDL2 创建游戏。我想让所有不同类型的系统上的用户都能访问我的游戏,而不仅仅是 Windows。我试着让我的游戏也可以在 Mac OS 上使用,但我想不出任何方法来做到这一点。我认为最好的方法是让 Visual Studio 将我的代码编译成像“.APP”而不是“.EXE”这样的文件类型,因为我没有任何形式的 Mac 或 Apple 计算机可以使用创建的软件适用于 Mac 的应用程序。但是,我无法弄清楚如何更改 Visual Studio 中的选项以将代码编译为不同的文件类型,或者即使这样做是可能的。

我在整个互联网上搜索了将“.EXE”转换为其他文件类型的方法,使用不同的 C++ 编译器编译成 Mac 兼容的文件等,但我找不到任何不需要的方法虚拟机或拥有物理 Mac 计算机(我都没有尝试过,因为这需要很多努力,我想要一个更简单的解决方案)。

如果有人能告诉我如何更改 Visual Studio 将代码编译成的文件类型,或者他们是否可以建议在 Windows 上工作、与 SDL2 兼容并且可以将 C++ 代码编译成在 Mac 计算机上工作的文件类型的不同编译器像“.APP”,这将解决我的问题。先感谢您!

标签: c++macosvisual-studiovisual-studio-2017cross-compiling

解决方案


你需要在你想要支持的所有不同平台上编译你的代码。使用每个平台支持的编译器。在一个平台上编译的代码不能在另一个平台上运行(交叉编译除外,见下文,但这很痛苦)。

在某些平台和某些编译器上,交叉编译一种选择,但如果您可以以任何方式设置本地工具链,则通常是痛苦多于收获。交叉编译器为与您当前运行的平台不同的平台生成代码,但要使其正常工作可能会很困难。然后你也无法在目标平台上测试你的代码(除非你有一个,在这种情况下,原生编译首先会更容易)。

您应该在您的持续集成系统(CI)btw 中使用不同的编译器在不同的系统上自动构建代码。所以你总是知道在你推送一个提交之后,它在什么平台上失败了,为什么。

最简单的方法(恕我直言):购买便宜的 Mac。购买一台便宜的 PC 并在其上安装 Linux。设置一个 CI 系统来构建您在所有系统(Windows、Mac、Linux)上提交到代码存储库的所有代码,并在构建失败时让它尖叫。还可以使用该系统为每个平台构建可安装的软件包,并在失败时再次尖叫。

对所有单元测试执行相同的操作。

这是支持多个平台的唯一严肃方法。


推荐阅读