Я портирую приложение на MacOS X - но система сборки первоначального разработчика использует NMAKE, и в идеале они хотели бы сохранить его вместо перехода на новое.
Мне удалось запустить NMAKE под OSX с использованием Wine (созданного с использованием MacPorts) и добавил поддержку Objective C в файлы сборки, и создал связанную с Unix оболочку PE 'run.exe', которую Wine может загружать, но использует POSIX перезвонить в такие вещи, как gcc и ld, как описано в разных местах онлайн как средство выхода из вина обратно в Unix.
Однако у меня есть несколько конкретных проблем. Они достаточно незначительны, чтобы я мог продолжить работу с портом, но это означает, что мне иногда нужно запускать сборки несколько раз из-за времени.
По сути, когда wine.exe вызывает обратно в оболочку и, таким образом, gcc, связь между дочерними процессами кажется нарушенной. gcc и ld никогда не вернут код ошибки даже в случае сбоя, потому что они не могут получить код выхода от своих порожденных потомков. ar на самом деле выведет, что не может найти своего потомка, и немедленно вернется, вызывая проблемы, когда ld пытается связать объектные файлы с библиотеками, которые все еще собираются вместе.
Кто-нибудь еще пробовал что-то подобное и видел ту же проблему, на OSX или где-то еще? Есть ли очевидное решение?