Makefile を make ターゲットの依存関係として含めることは悪い考えですか?
例えば。
hello.o: hello.cxx Makefile
$(CXX) -c $(CFLAGS) $< -o $@
そうすれば、Makefile が変更されるたびに、ターゲットが再コンパイルされます。
Makefile を make ターゲットの依存関係として含めることは悪い考えですか?
例えば。
hello.o: hello.cxx Makefile
$(CXX) -c $(CFLAGS) $< -o $@
そうすれば、Makefile が変更されるたびに、ターゲットが再コンパイルされます。
いいえ、それは悪い考えではありません。慣習的には決してそうしませんが、他のmakefileを呼び出すmakefileがある場合は、それを含めることは素晴らしい考えです.
あなたがしようとしているのは、Makefile が変更されるたびに clean (または他の同等のターゲット) を実行することだと思います。
これはそう達成することができます。(私はいくつかの C/C++ プロジェクトでこのレシピを使用しています)。
CLEANUP_TRIGGER := .makefile
BASE_MAKEFILE := $(firstword $(MAKEFILE_LIST))
FINAL_TARGET := hello.o
all: $(CLEANUP_TRIGGER) $(FINAL_TARGET)
hello.o : hello.c
$(CXX) -c $(CFLAGS) $< -o $@
$(CLEANUP_TRIGGER): $(BASE_MAKEFILE)
if [ -f $(CLEANUP_TRIGGER) ]; then $(MAKE) clean; fi
touch $@
clean:
rm -rf *.o
rm -f $(CLEANUP_TRIGGER)
.PHONY: all clean
本質は、CLEANUP_TRIGGER が一般的に呼び出されるルールの一部であることを確認することです。Makefile が CLEANUP_TRIGGER よりも新しい場合は常に make clean を実行します。