是否可以使Visual Studio 2017将C ++代码编译为exe以外的文件类型?

时间:2019-08-02 17:39:12

标签: c++ macos visual-studio visual-studio-2017 cross-compiling

最近我一直在使用Visual C ++ 2017和SDL2创建游戏。我想让我的游戏可以供所有不同类型的系统上的用户使用,而不仅仅是Windows。我尝试从让我的游戏在Mac OS上也可以使用开始,但是我不知道有任何方法可以做到这一点。我认为最好的方法是让Visual Studio将我的代码编译成“ .APP”而不是“ .EXE”之类的文件类型,因为我不拥有任何形式的Mac或Apple计算机,可以使用制造的软件适用于Mac的应用程序。但是,我无法弄清楚如何更改Visual Studio中的选项以将代码编译为其他文件类型,即使这样做也可以。

我已经在Internet上搜索了将“ .EXE”转换为其他文件类型,使用不同的C ++编译器编译成与Mac兼容的文件等的方法,但是我找不到任何有效的方法不需要虚拟机或物理Mac计算机(我都没有尝试过,因为这会花费很多精力,因此我希望有一个更简单的解决方案)。

如果有人可以告诉我如何更改Visual Studio将您的代码编译到的文件的类型,或者他们可以建议在Windows上运行的,与SDL2兼容的其他编译器,以及可以将C ++代码编译为可以工作的文件类型在Mac计算机(例如“ .APP”)上,可以解决我的问题。预先谢谢你!

1 个答案:

答案 0 :(得分:3)

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

交叉编译 some 平台和 some 编译器的一个选项,但通常比如果可以通过任何方式建立本地工具链,则可以获得收益。交叉编译器会为与您当前正在运行的平台不同的平台生成代码,但要使其正常工作可能会很困难。然后,您也将无法在目标平台上测试您的代码(除非您拥有一个代码,在这种情况下,本机编译首先会更容易)。

您应该在持续集成系统(CI)中使用不同的编译器在不同的系统上自动构建代码。这样一来,您就可以在推送落实后知道它在什么平台上失败以及为何失败。

最简单的前进方式(IMHO):购买便宜的Mac。购买便宜的PC并在其上安装Linux。设置CI系统以构建提交到所有系统(Windows,Mac,Linux)上的代码存储库的所有代码,并在构建失败时对您大喊大叫。还要使用该系统为每个平台构建可安装的程序包,然后再次失败时尖叫。

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

那是进一步支持多个平台的唯一严肃方式。