【问题标题】:Is it possible to get Visual Studio 2017 to compile c++ code into a file type other than exe? [duplicate]是否可以让 Visual Studio 2017 将 c++ 代码编译为 exe 以外的文件类型? [复制]
【发布时间】:2019-12-11 08:39:29
【问题描述】:

最近我一直致力于使用 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电脑上,这可以解决我的问题。提前谢谢!

【问题讨论】:

  • 几乎肯定行不通。围绕解决这个确切问题构建了完整的系统。我可以建议从像“Unity”这样的环境重新开始吗?请注意,Microsoft 可能会告诉您它可以完成 - 但您必须使用一组非常特定的库 - 足够严格,您可能应该选择不同的开发环境。
  • 虽然 CLANG 和 gcc 在某种程度上都可以为其他平台构建,但我将在“本机跨平台”工具/语言...单元或 Java 上进行第二次开发。我最喜欢 C++,但根据我的经验,C++ 中的跨平台实际上只有在访问本机硬件时才实用。
  • Can I program for Macs without owning one? 的可能重复项(但只是一个可能的重复项,因为该问题针对的是 VS2010 而不是 VS2017。鉴于该问题是在 2017 年之前提出的,因此不确定该细节的相关性。)跨度>

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


【解决方案1】:

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

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

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

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

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

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

【讨论】:

  • 出于好奇,VM 可以工作吗?
  • @AlexanderZhang 可能。
  • 那么,您对好的 Mac OS VM 软件有什么建议吗?
  • @CodyFG 不。我只使用过实际的硬件。
猜你喜欢
  • 2018-08-03
  • 1970-01-01
  • 2012-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多