c++ - 是否有可能让 Visual Studio 2017 将 c++ 代码编译成 exe 以外的文件类型?

标签 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 中的选项以将代码编译为不同的文件类型,或者即使这样做是可能的。

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

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

最佳答案

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

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

顺便说一下,您应该在持续集成系统 (CI) 中使用不同的编译器在不同的系统上自动构建代码。因此,您始终知道在推送提交后,它在哪些平台上失败以及原因。

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

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

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

关于c++ - 是否有可能让 Visual Studio 2017 将 c++ 代码编译成 exe 以外的文件类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57331208/

相关文章:

c++ - 我可以将 std::transform 与并行执行策略一起使用吗?

c++ - 找不到我的错误!错误 : expected identifier before '(' token

c# - 如何从 C# 获取和发送 UTF-8 中的字符串到 C++ DLL

macos - 在 macbook pro 上安装 PYQT5 后如何打开 QT Designer?

visual-studio - Visual Studio 2015重置Web项目以使用IIS Express

c# - Visual Studio 2017 在 64 位系统上以 32 位编译?

c++ - 如何在 C++ 中添加延迟

objective-c - 哪个应用程序有键盘焦点?

java - 无法通过 Java 发送 OS X 终端命令

c++ - 没有合适的默认构造函数可用。 (创建子类时)