불행히도, nmake는 make에 의해 느슨하게 영감을 받았으며 많은 중요한 일을 제대로하지 못했습니다. 가장 쉬운 방법은 두 플랫폼 모두에서 동일한 맛을 내기 시작하는 것입니다.
리눅스에서는 Gnu make가 기본 옵션입니다.
Windows의 경우 Gnu make에 대한 몇 가지 소스가 있으며 선택할 수있는 몇 가지 단점이 있습니다. 개인적으로는 주로 native win32 build of Gnu make from the GnuWin32 project을 사용합니다. 다른 프로젝트 패키지들 중 일부는 유용 할 것이기 때문에 프로젝트 패키지의 나머지 부분을 둘러 볼 수 있습니다.
대체 소스는 Cygwin 및 MinGW32/MSYS입니다.
Cygwin은 Windows 커널 위에 * nix 호환 환경을 제공하는 믿을만한 시도입니다. 이것은 Windows API를 통해 구현 된 * nix (특히 POSIX) 시스템 호출의 막대한 부분을 내보내는 DLL로 구성됩니다. 그 DLL은 또한 디스크 마운트에 대한 자체 아이디어를 가지고 있으며 * nix 스타일 경로 이름을 선호합니다. DLL 자체는 라이센스 GPL (상용 라이센스가 유료로 제공 되긴하지만)이며, Cygwin 환경에서 빌드 된 프로그램은 기본적으로이를 요구하므로 고려해야 할 요소가 될 수 있습니다.또 다른 요소는 Cygwin이 일반적인 Windows 사용자에게는 친숙하지 않기 때문에 Unix 사용자가 대처할 수없는 개발 프로젝트가 일반적으로 어려워집니다. 그러나 크로스 플랫폼 개발자의 경우 Cygwin은 Makefile에 필요한 일반적인 의심되는 유틸리티 프로그램을 모두 얻을 수 있으므로 Cygwin 환경을 대상으로하는 GCC와 MinGW32 기본 Windows 대상 GCC를 포함하므로 유용합니다.
MinGW32는 네이티브 Windows 실행 파일로 실행되도록 GCC 컴파일러를 이식하는 작업을 훌륭하게 수행 한 포팅 프로젝트입니다. 그들이 제공하는 헤더 파일과 함께 사용된다면 거의 모든 Windows API를 최신 Windows 설치와 함께 제공되는 C 런타임 DLL을 통해 사용할 수 있습니다.
MSYS는 일반적인 * nix Makefile에 의해 일반적으로 존재한다고 여겨지는 최소한의 유틸리티 집합 (* nix 셸로 시작하는)을 포함하는 경량 포크의 Cygwin입니다. Cygwin과 달리 MSYS는 기본 대상이 기본 Windows API가되도록 구성됩니다.
여기에 힌트를 얻으려는 의도가 있습니다. 아마도 평평한 상태 여야합니다. 호환성 문제는 사용하는 방언으로 끝나지 않습니다.
Makefile 언어 자체는 사용 가능한 명령 셸에 크게 의존하며, 가장 중요한 프로젝트 Makefile은 * nix의 cp 및 rm과 같은 핵심 유틸리티를 사용하여 끝납니다.
Make의 GnuWin32 빌드로 시작하고 MinGW32와 MSYS를 설치하는 것이 좋습니다. 따라서 MSYS와 리눅스 모두에서 작동하는 Makefile을 작성하는 것은 상대적으로 쉽고 플랫폼 별 로직을 약간만 필요로합니다.
메이크 파일 형식에 문제가 있습니까? makefile이 Windows에 없거나 뭔가를 실행하려고하는 일부 Linux 라이브러리를 참조 할 수 있습니다. MySQL과 링크하기 위해 일반적으로 'mysql_config --libs'를 실행하여 MySQL 라이브러리 목록을 얻는다. – qrdl
NMake는 다양한 * nix 버전이 서로 호환되는 것보다 * nix 버전의 make와 더 호환되지 않습니다. NMake와 make 모두에서 작동하는 파일을 작성할 수는 있지만, Windows에서 여러 가지 실제 make를 사용할 수 있으므로 노력할 가치가 없습니다. make가 선택되면 나머지 명령 문제가 나타납니다. – RBerteig