5

我正在使用 C++ 和 OpenGL/SDL 编写游戏,使用 Visual Studio 作为我的 IDE。我没有 Mac,我什至对这个平台也不太熟悉。但我想向 Mac 用户发布同样的内容。

我有三个问题。我可以在 PC 上编写和编译 Mac 程序吗?如果可以,这样做是否有任何可能的陷阱?最后,VS2010 可以为 Mac 编译,还是我需要使用另一个编译器?

4

3 回答 3

8

如果您使用的是 SDL,那么答案是“您可以接近您的愿望,直到最后一步”。能够在单个代码库中编写类似游戏的程序,然后将该代码库带到各种机器上并对其进行编译并使其工作,这正是 Simple DirectMedia 库的设计目的! 如果它至少没有使它成为一个合理的目标,它就不会很受欢迎。

这并不意味着您可以按下按钮并从 Visual Studio 中获取 Macintosh 或 Linux 二进制包。但是你总是可以找到朋友并让他们在代码库上为你尝试编译。只要您小心地只调用标准 C++ 库中的函数并留在 SDL 提供给您的框内,它就应该编译得很好……理论上

2018 年更新: -如果您想在 Mac 上编译但没有 Mac,Travis-CI 现在已经虚拟化了 OS X,因此您可以运行 clang 并将生成的二进制文件上传到某处。您可能不想在每次进行更改时都等待通过网络进行完整构建……但是一旦您在 OS X 上构建了跨平台代码库,持续集成可以确保您保持这种状态。

在 C++ 中比在其他语言中更难确保您处于“可移植沙箱”中(尤其是如果您是初学者)。如果您遵循专门针对 Microsoft 工具的教程,则可能会更难,因为他们对于建议您在其文档中进行仅限 Windows 的调用几乎没有疑虑。因此,能够将“完全调试”的代码交给朋友,让它第一次在新平台上编译和工作的几率很低。

当然,你需要一个测试期。而且您可能不应该等到最后一刻才让其他人通过在 XCode 或其他任何东西中编译它来确保基础工作正常。您可以改用 GCC 编译器来降低编写不可移植代码的风险,如果您开始引入实际上不是跨平台的依赖项,则更有可能抱怨。

如果您喜欢生活在边缘,也可以运行“Hackintosh”虚拟机。你当然可以制作一个 Linux VM 并尝试在其下构建,如果它有效,那将提高 Mac 构建也能工作的信心。虽然不会保证。

于 2012-10-18T04:11:51.350 回答
3

首先,您不能为 Mac 进行交叉编译。您将需要他们的“gcc”。Mac Universal 二进制文件可以(理论上)在 PC 上创建,但实际上还不可能。

VS2010 无法为 Mac 编译,但如果您打算使用不同的语言,那么您可以为 Mac 编写代码(例如在 Python 中)。

任何跨平台语言都会有所帮助。Python、Java、Ruby、Perl

于 2012-10-18T03:46:15.737 回答
2

一种选择是使用Java。如果将它与 eclipse RCP SWT 小部件结合使用,则可以将 Win/Linux/OSX 与本机 LAF 结合使用。您可能希望使用 eclipse 作为您的 IDE。

如果您真的必须使用 c++,您可以针对 wxWidgets 或其他一些跨平台小部件集,但编译确实需要所有 OSX 库的副本和知道如何定位平台/链接的编译器集。

如果您不想拥有任何类型的 Apple 硬件,我真的会推荐 Java 路线……更不用说痛苦了。此外,由于 JVM 支持的语言过多,您甚至不必用 Java 编写...试试 Scala!

于 2012-10-18T03:44:44.017 回答