【发布时间】:2011-03-29 19:54:12
【问题描述】:
我正在将一个应用程序移植到 MacOS X - 但原始开发人员的构建系统使用 NMAKE,理想情况下他们希望保留它而不是切换到新的。
我已经设法让 NMAKE 在 OSX 下使用 wine(使用 MacPorts 构建)运行,并为构建文件添加了 Objective C 支持,并创建了一个与 Unix 链接的 PE 包装器“run.exe”,wine 可以加载但使用 POSIX回调 gcc 和 ld 之类的东西,正如网上各个地方所描述的那样,作为一种从 wine 中逃回 Unix 的方法。
但是,我遇到了一些具体问题。它们足够小,我可以继续移植,但这确实意味着我有时需要运行几次构建,因为时间关系。
基本上,当 wine.exe 回调到 shell 和 gcc 时,子进程之间的链接似乎被破坏了。 gcc 和 ld 即使在失败时也永远不会返回错误代码,因为它们无法从生成的孩子那里获得退出代码。 ar 实际上会打印出它找不到它的孩子并立即返回,当 ld 尝试将目标文件链接到仍在组合中的库时会导致问题。
有没有其他人在 OSX 或其他地方尝试过类似的事情并看到同样的问题?有明显的解决办法吗?
【问题讨论】:
-
轻松生活,改用 CMake 之类的东西?或维护单独的构建系统:xcode、visual studio、autotools 或原始 gnu makefile——对我来说,你所做的并不是未来的证明
-
可以选择切换到全新的构建系统,但显然他们想要在 Windows 和 OSX 上都可以工作的东西,强烈反对维护多个系统。他们确实也非常喜欢坚持使用 nmake,因为这就是他们的习惯:) 我认为如果不是因为 wine child 进程问题,这将是一个完全面向未来的解决方案。