私は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ファイルに名前を付けると、GNUmakefile
GNU makeからのみ読み取ることができ、他のmakeからは読み取れないことを保証する必要があります。
答え3
~からここmakefileでこれを行う唯一の方法は次のとおりです。
ifeq (3.81,$(firstword $(sort $(MAKE_VERSION) 3.81)))
# stuff that requires make-3.81 or higher
endif