複数の形式があるライブラリ用のメークファイルも、同様の方法で変更します。
# 複数の形式のライブラリを別々に扱うためのメークファイル CFLAGS= -O SOURCES= main.c rest.c LIBRARY= lib.a LSOURCES= fnc.c OBJECTS= $(SOURCES:%.c=$(VARIANT)/%.o) VLIBRARY= $(LIBRARY:%.a=$(VARIANT)/%.a) LOBJECTS= $(LSOURCES:%.c=$(VARIANT)/%.o) VARIANT= . program profile debug: $$(OBJECTS) $$(VLIBRARY) $(LINK.c) -o $(VARIANT)/$@ $< lib.a debug_dir/lib.a profile_dir/lib.a: $$(LOBJECTS) ar rv $@ $? $$(VLIBRARY)($$(VARIANT)%.o): $$(VARIANT)%.o @true profile := VARIANT = profile_dir profile := CFLAGS = -O -pg debug := VARIANT = debug_dir debug := CFLAGS = -g .KEEP_STATE: profile_dir debug_dir: test -d $@ || mkdir $@ $$(VARIANT)/%.o: %.c $(COMPILE.c) $< -o $@
複数の形式を管理するこの手法は、便利ですがやや複雑です。説明を簡潔にするため、この手法は以下の例では省略しています。