Mac OSX 的各个版本如何向后兼容? (Xcode C++

How backwards compatible are the various versions of Mac OSX? (Xcode C++

我正在使用 C++ 开发游戏并依赖 OpenGL 的遗留功能。

我主要在 Windows 机器上进行编程,现在正在考虑扩展到 Linux 和 Mac OS。作为个人挑战,我希望让我的软件尽可能向后兼容并支持尽可能多的 OSes。使用 Windows,我已经能够维持低至 Windows 95 的支持(Visual Studio 在这个过程中给我带来了一些麻烦,但还是解决了)。但是,我对 Mac OS 几乎一无所知,直到现在我自己才使用过它。考虑到我的软件 运行s 在 Windows 95 上,它当然不需要任何高级功能。

旧版本Xcode似乎支持的MacOS的最低版本是10.1.x。如果我要为这个版本的 Mac OS 编写软件,它会在更现代的 Mac OS 版本上 运行 吗?我读到有一些软件补丁可以在 never 版本上支持一些较旧的 MacOS 软件,但我不想那样给最终用户带来不便。 我不介意构建两个不同版本的软件(例如,一个传统的和现代的启动器)但是必须构建五个或十个不同版本的软件将是一个巨大的痛苦,我宁愿尽可能避免这种情况。

对于我在该领域缺乏知识,我深表歉意,我自己的研究只提供了非常有限的信息,我宁愿不要在毫无结果的努力上浪费数周时间。

TL;DR:我想用 Xcode (C++) 为 Mac OSX 编写支持尽可能多的 OS 版本的软件。如果我的目标是 Mac OS 版本 10.1,我可以期望它在 Mac OS 的现代版本上达到 运行 吗?如果不是,要支持尽可能多的 Mac OS 版本需要多少努力?

您将不得不决定在何处停止支持,或者您将不得不在不同的专门构建的构建环境中构建应用程序的多个版本。

Modern macOS (10.15) 仅限 64 位 x86-64,对 32 位应用程序的支持为零。如果您在 10.15 上构建,您甚至无法构建 32 位图像。如果您这样做,它将链接到 OS.

的旧版本中不存在的库。

Mac OS X 10.6 是最后一个发布的 32 位 x86 版本,但也是 OS 的第一个 64 位版本,因为它代表了过渡到 64 位。它也是最后一个发布的 PowerPC 版本。

如果你想支持 PowerPC 机器,这在 10.1 时代是唯一的选择,你需要一个兼容的系统来构建它。

在生态系统方面,大多数 Mac 用户能够 运行 当前版本的 OS。任何 2012+ 版本仍然可以获得当前的 OS 版本,这是很多硬件。在此之前的任何东西都是 32 位和 PowerPC 硬件的混合,尽管你不会看到很多人在野外使用这样的系统。

简而言之,10.15 很容易,10.14 和 10.13 不会很难。任何超过这个的东西都会有不同程度的挑战,但超过 10.6 的东西会变得非常复杂。

估计受欢迎程度的一种方法是像 Steam Hardware Survey 这样的细分:

  • 10.15: 31.6%
  • 10.14: 34.1%
  • 10.13: 14.8%
  • 10.12: 5.7%
  • 10.11: 3.7%

所以好消息是 10.13 之后情况急剧下降,到 10.11 已经没有多少用户 运行宁 OS 这么老了。