😃

Makefileの作り方

に公開

NAME = libftprintf.a
CC = cc
CFLAG = -Wall -Wextra -Werror 
AR = ar rcs

SRC = ft_printf.c
OBJ = $(SRC:.c=.o)

all:$(NAME)

$(NAME): $(OBJ)
	$(AR) $(NAME) $(OBJ)

clean:
	rm -f $(OBJ)
fclean: clean
	rm -f $(NAME)
re: fclean all


AR:変数名(=「アーカイブコマンド」の略
arで複数の .o ファイルを .a にまとめるという意味、rでライブラリに .o を追加(すでにあれば置き換える)という意味になる。

$(NAME): $(OBJ)
これは ターゲットと依存関係を表している。

$(NAME):作りたいファイル名(たとえば libftprintf.a)
$(OBJ):そのファイルを作るために必要な .o ファイルの一覧
➡️ 意味:
「$(OBJ)(.oファイル群)が更新されたら $(NAME) を作り直す」
そのためoファイルが更新させたら自動で新しいのを使ってくれる。

$(AR) $(NAME) $(OBJ)
これは 実際にコマンドを実行する行。ここでやっと作られる。

clean コンパイル結果(.oファイル)だけ削除 $(OBJ)(= .oファイル)
fclean clean に加えて、生成されたライブラリも削除 .oファイル + $(NAME) (.a)
re 一度全部削除してから作り直す fclean → all を実行

Discussion