我正在使用 C++ 和 OpenGL/SDL 编写游戏,使用 Visual Studio 作为我的 IDE。我没有 Mac,我什至对这个平台也不太熟悉。但我想向 Mac 用户发布同样的内容。
我有三个问题。我可以在 PC 上编写和编译 Mac 程序吗?如果可以,这样做是否有任何可能的陷阱?最后,VS2010 可以为 Mac 编译,还是我需要使用另一个编译器?
我正在使用 C++ 和 OpenGL/SDL 编写游戏,使用 Visual Studio 作为我的 IDE。我没有 Mac,我什至对这个平台也不太熟悉。但我想向 Mac 用户发布同样的内容。
我有三个问题。我可以在 PC 上编写和编译 Mac 程序吗?如果可以,这样做是否有任何可能的陷阱?最后,VS2010 可以为 Mac 编译,还是我需要使用另一个编译器?
如果您使用的是 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 构建也能工作的信心。虽然不会保证。
首先,您不能为 Mac 进行交叉编译。您将需要他们的“gcc”。Mac Universal 二进制文件可以(理论上)在 PC 上创建,但实际上还不可能。
VS2010 无法为 Mac 编译,但如果您打算使用不同的语言,那么您可以为 Mac 编写代码(例如在 Python 中)。
任何跨平台语言都会有所帮助。Python、Java、Ruby、Perl
一种选择是使用Java。如果将它与 eclipse RCP SWT 小部件结合使用,则可以将 Win/Linux/OSX 与本机 LAF 结合使用。您可能希望使用 eclipse 作为您的 IDE。
如果您真的必须使用 c++,您可以针对 wxWidgets 或其他一些跨平台小部件集,但编译确实需要所有 OSX 库的副本和知道如何定位平台/链接的编译器集。
如果您不想拥有任何类型的 Apple 硬件,我真的会推荐 Java 路线……更不用说痛苦了。此外,由于 JVM 支持的语言过多,您甚至不必用 Java 编写...试试 Scala!