Makefileの書き方③

 前回ではマクロを使ったMakefileの作り方に関して紹介しました。今回はもう少し複雑なマクロの使いかたに関して紹介します。

内部マクロ

 マクロにはあらかじめ展開内容が決まっている内部マクロがあります。代表的なものとして、以下のようなものが挙げられます。

書き方 展開
$@ 処理対象のターゲット名
$ 依存ファイルの先頭ファイル名
$^ 依存ファイルのリスト

 これらを用いて書き直します。同じ名前を何度も書くのは避けることで、ファイル名のタイプミスなどをなくすことができます。

ソースコード

#Makefile
OBJS = echo_main.o listened_socket.o main.o
CC = gcc

a.out: ${OBJS}
        ${CC} -o $@ $^
main.o: main.c
        ${CC} -c $<
echo_main.o: echo_main.c
        ${CC} -c $<
listened_socket.o: listened_socket.c
        ${CC} -c $<

main.c: server.h

 動作的にはMakefileの書き方①と全く同じです。