Makefile에서 GNU make가 사용되는지 확인하는 방법은 무엇입니까?

Makefile에서 GNU make가 사용되는지 확인하는 방법은 무엇입니까?

나는 GNU Make가 지금까지 가장 일반적으로 사용된다는 것을 알고 있지만 GNU Make가 실제 사용되는 make 프로그램인지 확인하는 방법을 찾고 있습니다. Makefile에서 인쇄할 수 있는 특수 변수가 있습니까? 예를 들면 다음과 같습니다.

@echo "$(MAKE_VERSION)"

GNU Make와 다른 변형이 모두 설치되어 있으면 어떻게 됩니까?

which make
/usr/bin/make

답변1

사용:

$(MAKE) --version

여기서 일하세요. 내 결과는 다음과 같습니다

make --version
GNU Make 3.82
Built for i686-pc-linux-gnu
Copyright (C) 2010  Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

답변2

~에서GNU 제작 매뉴얼:

기본적으로 make는 makefile을 찾을 때 다음 이름을 순서대로 시도합니다: GNUmakefile, makefile 및 Makefile.

따라서 make 파일의 이름을 지정하면 GNUmakefileGNU make에서만 읽을 수 있고 다른 make에서는 읽을 수 없음을 보장해야 합니다.

답변3

~에서여기makefile에서 이 작업을 수행하는 유일한 방법은 다음과 같습니다.

  ifeq (3.81,$(firstword $(sort $(MAKE_VERSION) 3.81)))
    # stuff that requires make-3.81 or higher
  endif

관련 정보