我可以在不拥有Mac的情况下为Mac编程吗?

时间:2012-10-18 03:41:20

标签: c++ windows visual-studio-2010 macos cross-compiling

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

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

3 个答案:

答案 0 :(得分:7)

如果你正在使用SDL,那么答案是“你可以接近你的愿望,直到最后一步,”。能够在单个代码库中编写类似游戏的程序,然后将该代码库带到各种机器并进行编译并使其工作 is exactly what the Simple DirectMedia Library was designed to do! 如果它不是很受欢迎至少没有把它作为一个合理的目标。

这并不意味着您将能够按下按钮并从Visual Studio中获取Macintosh或Linux二进制包。但你总能找到朋友并要求他们在代码库上为你编译。只要你一直小心地只调用标准C ++库中的函数并保留在SDL给你的框内,它应该编译得很好...... 理论上

  

更新2018: - 如果你想在Mac上编译而没有,那么Travis-CI现在有virtualized OS X,所以你可以运行clang并且实际拥有它会在某处上传生成的二进制文件。您可能不希望每次进行更改时都等待网络上的完整构建...但是一旦您在OS X上构建跨平台代码库,持续集成就可以确保您保持这种方式。< / em>的

在C ++中比在其他语言中更难以确保您保持在“可移植性沙箱”中(特别是如果您是初学者)。如果您正在遵循针对Microsoft工具的教程,那就更难了,因为他们很少有人建议您在他们的文档中进行仅限Windows的调用。因此,能够将“完全调试”的代码交给朋友,让它在第一次编译和在新平台上工作的几率很低。

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

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

答案 1 :(得分:3)

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

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

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

答案 2 :(得分:2)

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

如果你真的必须使用c ++,你可以瞄准wxWidgets或其他一些跨平台的widget集,但编译实际上需要所有OSX库和编译器集的副本知道如何定位平台/链接。

如果您不想拥有任何类型的Apple硬件,我真的会推荐Java路线......更不用说痛苦了。除此之外,有了大量JVM支持的语言,你甚至不需要用Java编写...尝试Scala!