3

我正在将一个应用程序移植到 MacOS X - 但原始开发人员的构建系统使用 NMAKE,理想情况下他们希望保留它而不是切换到新的。

我设法让 NMAKE 使用 wine(使用 MacPorts 构建)在 OSX 下运行,并为构建文件添加了 Objective C 支持,并创建了一个与 Unix 链接的 PE 包装器'run.exe',wine 可以加载但使用 POSIX 回调进入 gcc 和 ld 之类的东西,正如在网上各个地方所描述的那样,作为一种从 wine 中逃回 Unix 的方法。

但是,我有一些具体问题。它们足够小,我可以继续使用该端口,但这确实意味着我有时需要运行几次构建,​​因为时间问题。

基本上,当 wine.exe 回调到 shell 并因此调用 gcc 时,子进程之间的链接似乎被破坏了。gcc 和 ld 即使在失败时也永远不会返回错误代码,因为它们无法从生成的孩子那里获得退出代码。ar 实际上会打印出它找不到它的孩子并立即返回,当 ld 尝试将目标文件链接到仍在组合的库时会导致问题。

有没有其他人在 OSX 或其他地方尝试过类似的东西并看到同样的问题?有明显的解决方案吗?

4

2 回答 2

1

Microsoft .NET Rotor (SSCLI) 项目包括源代码,旨在构建在 OSX 和其他地方。转子源代码包括 NMake 的源代码。所以让Rotor工作,然后使用它的Nmake。即使您更喜欢继续使用基于 Wine 的 Nmake,您也可以从 Rotor 在 Unix 上使用 Nmake、使用 Gcc 等学习。

于 2010-12-09T04:56:33.163 回答
0

如果原始开发人员构建系统没有什么奇怪/不一致的地方,您是否可以将他们的 make 文件自动转换回 Unix make,并保持您的构建“原生”?

(无论如何构建都足够令人担忧,没有额外的复杂性)

于 2010-08-14T15:37:34.423 回答