1# Makefile for Mini Shell Examples
2
3CC = gcc
4CFLAGS = -Wall -Wextra -std=c11
5TARGET_DIR = .
6
7# 실행 파일
8TARGETS = minishell_v1 builtins redirect pipe minishell
9
10# 기본 타겟
11all: $(TARGETS)
12
13# 1. 기본 쉘
14minishell_v1: minishell_v1.c
15 $(CC) $(CFLAGS) -o $(TARGET_DIR)/minishell_v1 minishell_v1.c
16
17# 2. 내장 명령어 테스트
18builtins: builtins.c
19 $(CC) $(CFLAGS) -DTEST_BUILTINS -o $(TARGET_DIR)/builtins builtins.c
20
21# 3. 리다이렉션 테스트
22redirect: redirect.c
23 $(CC) $(CFLAGS) -DTEST_REDIRECT -o $(TARGET_DIR)/redirect redirect.c
24
25# 4. 파이프 테스트
26pipe: pipe.c
27 $(CC) $(CFLAGS) -DTEST_PIPE -o $(TARGET_DIR)/pipe pipe.c
28
29# 5. 완성된 미니 쉘
30minishell: minishell.c
31 $(CC) $(CFLAGS) -o $(TARGET_DIR)/minishell minishell.c
32
33# 테스트 (간단한 실행 확인)
34test: all
35 @echo "=== 컴파일 완료 ==="
36 @echo "실행 파일:"
37 @ls -lh minishell_v1 builtins redirect pipe minishell 2>/dev/null || true
38
39# 정리
40clean:
41 rm -f $(TARGETS)
42 rm -f *.o
43 @echo "정리 완료"
44
45# 도움말
46help:
47 @echo "Mini Shell Makefile"
48 @echo ""
49 @echo "사용법:"
50 @echo " make all - 모든 실행 파일 컴파일"
51 @echo " make minishell_v1 - 기본 쉘만 컴파일"
52 @echo " make builtins - 내장 명령어 테스트만 컴파일"
53 @echo " make redirect - 리다이렉션 테스트만 컴파일"
54 @echo " make pipe - 파이프 테스트만 컴파일"
55 @echo " make minishell - 완성된 미니 쉘만 컴파일"
56 @echo " make test - 컴파일 후 파일 확인"
57 @echo " make clean - 실행 파일 제거"
58 @echo " make help - 이 도움말 출력"
59
60.PHONY: all test clean help