1

Makefile を make ターゲットの依存関係として含めることは悪い考えですか?

例えば。

hello.o: hello.cxx Makefile
    $(CXX) -c  $(CFLAGS) $< -o $@

そうすれば、Makefile が変更されるたびに、ターゲットが再コンパイルされます。

4

2 に答える 2

2

いいえ、それは悪い考えではありません。慣習的には決してそうしませんが、他のmakefileを呼び出すmakefileがある場合は、それを含めることは素晴らしい考えです.

于 2013-01-30T12:07:32.910 に答える
0

あなたがしようとしているのは、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 を実行します。

于 2013-01-31T02:46:17.717 に答える