December 12, 2020
パターンルール
ルールの target と prerequisites には %
を含むパターンが書けます。
%.o : %.c ; recipe...
target の %
と prerequisites の %
は一致していなければならず、この例では main.c
が存在しないので main.o
は作れません。
hoge.c
が存在するため hoge.o
は作れます。
%.o: %.c
gcc $< -o $@
$ ls *.c
hoge.c
$ make main.o
make: *** No rule to make target 'main.o'. Stop.
$ make hoge.o
gcc hoge.c -o hoge.o
prerequisites なしで target のみでも書けますし、後方一致も書けますが、部分一致は書けません。
%.echo:
echo $@
fuga.%: hoge.%
ln -s $< $@
%hoge%:
echo $@ $<
$ make vaa.echo
echo vaa.echo
vaa.echo
$ make fuga.c
ln -s hoge.c fuga.c
$ make fuga.o
gcc fuga.c -o fuga.o
$ make _hoge_
make: *** No rule to make target '_hoge_'. Stop.