$(foreach name, $(patsubst lib%.a,%,$(LIBS)), \
$(eval lib$(name).a : lib$(name).a($$($(name)_OBJS))))
上記の行で Make が失敗し、セパレーターが見つからないというメッセージが表示されます。
:68: *** missing separator. Stop.
$(foreach name, $(patsubst lib%.a,%,$(LIBS)), \
$(eval lib$(name).a : lib$(name).a($$($(name)_OBJS))))
上記の行で Make が失敗し、セパレーターが見つからないというメッセージが表示されます。
:68: *** missing separator. Stop.
同じアーカイブ内の複数のメンバーを指定するには、すべてのメンバー名を括弧内にまとめて記述します。例えば:
foolib(hack.o kludge.o)
次と同等です。
foolib(hack.o) foolib(kludge.o)
ただし、これは前提条件には当てはまらないようです (GNUMake 3.8.2):
# This works:
flib: foolib(hack.o) foolib(kludge.o)
# This doesn't:
flib: foolib(hack.o kludge.o)
したがって、小さな変更が必要なだけです (@Neil のショートカットと括弧の慎重な処理を使用):
# Change this:
$(foreach name, $(LIBS:lib%.a=%), \
$(eval lib$(name).a : lib$(name).a($$($(name)_OBJS))))
# to this:
lparen := (
rparen := )
$(foreach name, $(LIBS:lib%.a=%), \
$(eval lib$(name).a : $($(name)_OBJS:%=lib$(name).a$(lparen)%$(rparen))))