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

Ann*_*inn 5 c++ windows macos cross-compiling visual-studio-2010

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

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

Hos*_*ork 8

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

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

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

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

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

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