私はmakefileで遊んで偶然発見しました。%。または%.氏。私が理解しているところによると、すべてを指定します。氏またはああ文書。しかし、これがうまくいく理由は次のとおりです。
%.o: %.c
$(CC) -c $^ -o $@
これはうまくいきません
SOURCE := $(wildcard *.c)
$(SOURCE:.c=.o): SOURCE
$(CC) -c $^ -o $@
両方の式はすべてのファイルを指定します。だから何%。makeファイルのシンボルは何をしますか?
ベストアンサー1
構造:
%.o: %.c
$(CC) -c $^ -o $@
はパターンルール、これは暗黙のルールです。それは指定する一つ目標と一つ$(CC)
依存関係を持ち、ターゲットごとに一度呼び出されるようにします。しかし、これは:
SOURCE := $(wildcard *.c)
$(SOURCE:.c=.o): $(SOURCE)
$(CC) -c $^ -o $@
標準ルールですが(おそらく)たくさん目標とたくさん依存関係。しかし、それにもかかわらず一度だけ呼び出されます$(CC)
。