0=2. 2025. 5. 30. 02:40

πŸ“Œ %

%λŠ” Makefile의 νŒ¨ν„΄ λ§€μΉ­(Pattern Matching)μ—μ„œ μ‚¬μš©λ˜λŠ” μ™€μΌλ“œμΉ΄λ“œ(wildcard) 역할이닀.
μ–΄λ–€ λ¬Έμžμ—΄κ³Όλ„ λŒ€μ‘ν•  수 μžˆλŠ” 'placeholder'같은 것이닀.

 

κΈ°λ³Έ μ—­ν•  (νŒ¨ν„΄ κ·œμΉ™)

%λŠ” ν•˜λ‚˜μ˜ λ¬Έμžμ—΄ νŒ¨ν„΄μ„ μ˜λ―Έν•œλ‹€.

%.o: %.cλŠ” .cνŒŒμΌμ„ .o파일둜 λ³€ν™˜ν•˜λŠ” 일반 κ·œμΉ™μ„ λ§Œλ“€ λ•Œ μ‚¬μš©ν•œλ‹€.

 

μ˜ˆμ‹œ

%.o: %.c
    $(CC) $(CFLAGS) -c $< -o $@
  • %.o: λͺ¨λ“  .o 파일
  • %.c: λͺ¨λ“  .c 파일과 λŒ€μ‘
  • $<: ν˜„μž¬ 컴파일 쀑인 .c 파일 이름 (%.c)
  • $@: ν˜„μž¬ 생성 쀑인 .o 파일 이름** (%.o)

 

νŒ¨ν„΄ λ³€ν™˜ $(VAR:%.c=%.o)

%λŠ” λ³€μˆ˜ κ°’μ—μ„œ νŠΉμ • νŒ¨ν„΄μ„ λ³€ν™˜ν•  λ•Œλ„ μ‚¬μš©ν•œλ‹€.

 

μ˜ˆμ‹œ

SRC = srcs/ft_putchar.c srcs/ft_swap.c
OBJ = $(SRC:%.c=%.o)
  • %.c%.o: srcs/ft_putchar.cλŠ” srcs/ft_putchar.o둜 λ³€ν™˜λœλ‹€.
  • $(OBJ)srcs/ft_putchar.o srcs/ft_swap.o

 

μ„œλΈŒ 디렉토리 포함 κ·œμΉ™

%λŠ” μ„œλΈŒ 디렉토리 κ΅¬μ‘°μ—μ„œλ„ μ‚¬μš© κ°€λŠ₯ν•˜λ‹€.

SRC = srcs/ft_putchar.c srcs/ft_swap.c
OBJ = $(SRC:srcs/%.c=srcs/%.o)

srcs/ft_putchar.csrcs/ft_putchar.o둜 λ³€ν™˜ν•΄μ€€λ‹€.