2

我正在尝试将我的项目移植到另一个平台,我发现这个新平台与我开始使用的平台之间存在一些差异。我已经看到了 autotools 包和配置脚本,它们应该可以帮助解决这个问题,但我想知道为每个新平台设置一个单独的分支是多么可行。

我看到的唯一问题是如何在目标平台上进行开发,然后将更改合并到其他分支而不获得与平台相关的更改。如果有办法做到这一点,在我看来它会更干净。

有没有人这样做可以推荐/不鼓励这种方法?

4

2 回答 2

4

我肯定会反对这种方法。

如果您将相同的代码保留在无法合并的分支中,您只是在自找麻烦。如果您忘记将更改应用于您的平台分支之一,那么跟踪哪些更改已应用于哪些分支将会非常令人困惑。

您没有提到该语言,而是使用该语言中可用的功能来区分平台之间的代码差异,但使用一个分支。例如,在 C++ 中,您应该首先使用基于文件的分隔。例如,如果您有 Mac、Linux 和 Windows 平台的声音代码,请创建一个 sound_mac.cpp、sound_windows.cpp 和 sound_linux.cpp 文件,每个文件都包含相同的类和方法,但包含非常不同的特定于平台的实现。显然,您只需将适当的文件添加到特定平台上的 IDE。因此,您的 Xcode 项目获取 sound_mac.cpp 文件,而您的 Visual Studio 项目使用 sound_windows.cpp 文件。引用这些类和方法的文件将使用#ifdef 来确定要包含哪些标头。

您将对安装程序脚本等内容使用类似的方法。Mac 上的安装程序可能与 Windows 上的安装程序不同,但两者的文件都将位于分支中。您在 Mac 上的构建脚本将简单地利用 Mac 特定的安装程序文件并忽略 Windows 特定的文件。

将内容放在一个分支中并忽略不适用于当前平台的内容,可以让您在主题分支和主分支之间来回合并,让您的生活更加理智。

于 2012-07-13T15:43:04.893 回答
0

分支以解决目标平台的兼容性是可行的。只要确保将与目标平台无关的更改分离到另一个分支中即可。

于 2012-07-19T13:11:14.243 回答