すべてのターゲットに依存関係を追加する準備ができている場合は、警告をエラーにすることができます。
以下は、エラーのあるメイク ファイルです (「SRC」ではなく「SRCS」)。
# Turn on the warning we want
MAKEFLAGS += --warn-undefined-variables
# Make sure MAKECMDGOALS is defined, so it doesn't cause an error itself
ifndef MAKECMDGOALS
MAKECMDGOALS = all
endif
SRC=hello.c
all: compile
# Fails if the Makefile contains any warnings.
# Run this Makefile with the same goals, but with the -n flag.
# Grep for warnings, and fail if any are found.
no-make-warnings:
! make -n $(MAKECMDGOALS) 2>&1 >/dev/null | grep warning
# Targets you want to check must depend on no-make-warnings
compile: no-make-warnings
gcc -o hello $(SRCS)
実行すると、次のように表示されます。
$ make
! make -n all 2>&1 >/dev/null | grep warning
Makefile:17: warning: undefined variable `SRCS'
make: *** [no-make-warnings] Error 1
チェックしたいすべてのターゲットをターゲットに依存させるだけですno-make-warnings
。
誰かがそれを自動的に行う方法を知っている場合は、チャイムインしてください。