2010-02-17 6 views
21

gnu make, microsoft nmake 및 posix 표준의 유사/다른 점은 무엇입니까?gnu make, microsoft nmake 및 posix 표준의 차이점은 무엇입니까?

분명히 "어떤 OS입니까?", "어떤 컴파일러입니까?" 와 "어떤 링커?"라고 설명하고 있지만 필자는 메이크 파일 자체의 구문, 의미 및 명령 행 옵션을 구체적으로 언급하고 있습니다.

gnu make의 설명서를 기반으로 메이크 파일을 작성한다면, 내가 알아야 할 가장 중요한 이식성 문제는 무엇입니까?

+0

관련 항목 : [GNU-Make에서 POSIX로 동작 제한 @ Unix.SE] (http://unix.stackexchange.com/q/144424/50602) 슬프게도이를 달성 할 수있는 방법이없는 것처럼 보입니다. '.POSIX' 특수 타겟을 사용할 수 있습니다. – Palec

답변

10

GNU Make와 POSIX Make는 공통 코어를 공유하여 GNU Make가 POSIX Make를위한 makefile을 이해하고 동일한 방법으로 해석합니다. 거의 예외는 아닙니다. 그러나 많은 GNU Makefile은 GNU Make에서만 사용 가능한 기능을 사용합니다. 때때로 이것은 신중하고 의식이 있습니다. 때로는 그렇지 않습니다 (그리고 때로는 문제가 아닙니다). 필자는 Microsoft nmake에 익숙하지 않습니다. 필자는 POSIX Make 시멘틱스를 핵심으로 삼을 가능성이 높지만 확장 된 확장 세트를 가질 것입니다.

일반적으로 autoconf와 같은 프로그램은 휴대용 Makefile에 가깝습니다.

GNU Make를 사용할 때주의해야 할 주요 사항은 파일 이름 (매크로)을 유용한 값으로 매핑하기위한 확장 된 기능 표기법입니다. 그들은 의심의 여지없이 유용하지만, 이식성을위한 함정이기도합니다.

접미사 규칙에 대한 '%의 .x를'표기는 POSIX에 의해 정의되지 않은 - 그들은 공통의 확장으로 인식됩니다

'%''"' 구현 정의되는 문자를 포함하는 대상의 해석.

+0

저는 aix 프로그램을 몇 번 실행했습니다. 왝. 그것은 엄격하게 POSIX이거나 다른 표준적인 것입니까? – Anycorn

+0

@unknown : POSIX Make와 매우 비슷합니다 - 그 중 하나와 System V make 프로그램 중 하나 사이에 있습니다. POSIX Make는 다양한 make 변종의 공통 하위 집합이다. –

+2

또한 (MAKEFLAGS 변수와 관련된) 명령 행 옵션, (대문자, 점으로 시작하는) 특수 타겟 및 내장 규칙은 매우 다양합니다. 예 : '.PHONY'라는 특수 타겟은 Gnu Make 세계 외부에서도 지원되는 것 같습니다. 유일한 안전한 방법은 makefile을 테스트하는 것입니다. 안전하게 플레이하고 싶다면, POSIX를 아주 제한적으로 만들지 만, POSIX를 준수하십시오. – Palec

관련 문제