😃
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