2010-08-14 3 views
3

MacOS X에 응용 프로그램을 포팅하려고합니다. 그러나 원래 개발자의 빌드 시스템은 NMAKE를 사용하며 이상적으로는 새로운 시스템으로 전환하지 않고 그대로 유지하려고합니다.OSX에서 nmake를 사용합니까?

Wine (MacPorts를 사용하여 빌드 됨)을 사용하여 OSX에서 NMAKE를 실행하고 Objective C 지원을 빌드 파일에 추가하고 와인을로드 할 수 있지만 사용하는 Unix 링크 된 PE 래퍼 'run.exe'를 만들었습니다 POSIX는 gcc와 ld 같은 것을 다시 불러들입니다. 와인을 유닉스로 탈출시키는 수단으로 온라인상의 여러 곳에서 설명했습니다.

그러나 몇 가지 특정 문제가 있습니다. 그것들은 내가 포트를 타고 갈 수있을 정도로 사소한 편이지만 타이밍 때문에 빌드를 몇 번 실행해야한다는 것을 의미합니다.

기본적으로 wine.exe가 셸에 다시 호출하여 gcc를 호출하면 하위 프로세스 간의 연결이 끊어진 것 같습니다. gcc와 ld는 생성 된 자식으로부터 종료 코드를 얻을 수 없으므로 실패시에도 오류 코드를 반환하지 않습니다. ar은 실제로 자식 파일을 찾지 못하고 즉시 반환 할 것이고, ld가 객체 파일을 라이브러리에 연결하려고 시도 할 때 문제가 발생합니다.

OSX 또는 다른 곳에서 다른 사람이 비슷한 것을 시도해 보았지만 같은 문제가 발생 했습니까? 분명한 해결책이 있습니까?

+0

CMake와 같은 것으로 전환하십시오. xcode, visual studio, autotools 또는 raw gnu makefile - 나에게 나에게 무엇이하고있는 것이 미래의 증거가 아님 –

+0

완전히 새로운 빌드 시스템으로 전환 할 수있는 옵션이 있지만 분명히 Windows와 OSX 모두에서 여러 시스템을 유지 관리하는 데 강력하게 작용할 것입니다. 그것들은 nmake를 사용하는 것을 강력하게 선호했는데, 그 이유는 다음과 같습니다. 저는 와인의 하위 프로세스 문제가 아니라면 이것이 완전히 미래를 보장하는 솔루션이라고 생각합니다. –

답변

1

마이크로 소프트 .NET 회 전자 (SSCLI) 프로젝트는 OSX에 다른 곳에서 구축 할 목적으로 소스 코드를 포함 (추가 합병증없이, 어쨌든 충분히 내포되는 빌드). Rotor 소스 코드에는 NMake 소스 코드가 포함되어 있습니다. 로터가 작동하도록 만든 다음 Nmake를 사용하십시오. Wine 기반의 Nmake를 계속 사용하기를 원한다고해도, Rotor의 유닉스에서의 Nmake 사용법, Gcc 사용법 등을 배울 수 있습니다.

+0

이것은 완벽합니다, 감사합니다! 약간 노화 된 코드를 해킹하고 코드를 수정하고 Microsoft의 빌드 스크립트를 우회 한 후 필자는 이제 OSX 고유의 완벽하게 작동하는 nmake 바이너리를 가지고 있습니다. 내가 고쳐야했던 모든 것들과 완전히 깨진 빌드를 제외하고, 마이크로 소프트는 OSX (그리고 유닉스)를 감싸는 데 꽤 좋은 역할을했다. –

+0

도움이 되니 기쁩니다. 어딘가에서 변경 사항을 게시하여 다른 사람들이 작업에서 이익을 얻을 수 있도록해야합니다! –

0

원래 개발자가 시스템을 구축하는 데 이상하거나 일치하지 않는 것이 없다면 make 파일을 Unix make로 자동 변환하고 빌드를 '기본'으로 유지할 수 있습니까?

+0

나는 변환기를 만드는 것에 대해 생각해 봤지만 실제로는 nmake-in-wine 솔루션이 거의 완벽하게 작동 할 때 - 특히 nmake가 Unix 스타일의 길을 고민하지 않고서는이 이상한 와인 문제 일뿐입니다. –