25.07.28 학습개발일지 / Makefile+

2025. 7. 30. 22:40·LMS 7/개발일지

Makefile

> Makefile은 빌드의 자동화를 위함인데, 이전의 Makefile의 방법으로는 파일이 늘어날 수록 모든 곳에 계속 추가를 해줘야한다는 한계가 있다

> 따라서 변수와 패턴규칙(변환단축키)를 이용하여 원래의 목적에 맞게 Makefile을 재구성한다

# 컴파일러와 실행파일 이름 설정
CC = gcc
TARGET = myprogram
 
# 소스 파일 목록과 오브젝트 파일 자동 생성
SRCS = main.c foo.c bar.c # baz.c
OBJS = $(SRCS:.c=.o)
 
# all 타겟: 최종 실행파일 빌드
all: $(TARGET)
 
# 실행파일 생성
$(TARGET): $(OBJS)
	$(CC) $(OBJS) -o $@
 
# 오브젝트 파일 생성 규칙
%.o: %.c
	$(CC) -c $< -o $@
 
# clean 타겟: 빌드 산출물 삭제
clean:
	rm -f $(TARGET) *.o

1. 컴파일러(CC)

CC = gcc
or
CC = g++ // C++

2. 실행파일(TARGET)

TARGET = myprogram
// 단순 예, TARGET은 실행파일 이름이 되므로 자유롭게 결정하되 의미있는 것으로 작명한다

3. 소스파일 목록(SRCS)

SRCS = .c .c .c ...

4. 오브젝트 파일 목록(OBJS)

OBJS = .o .o .o ...

 

4.2 목적파일 변경 자동화

$(SRCS : .c = .o)
// ~.c 파일들을 ~.o 파일로 모두 변경하는 절차이다

5. all 뒤 의존 파일을 모두 빌드(ALL)

all : $(TARGET)

6. 현재 TARGET의 이름($@)

$(TARGET): $(OBJS)
	$(CC) $(OBJS) -o $@
// 만약 $(TARGET)이 main이라면 $@는 main이 된다

7. 첫 번째 의존성 파일($<)

%.o: %.c
	$(CC) -c $< -o $@
// 만약 %.c가 foo.c 라면 $<는 foo.c가 된다.

'LMS 7 > 개발일지' 카테고리의 다른 글

25.07.30 개발학습일지 / C++ Study4(chapter 5, chapter 6)  (2) 2025.07.30
25.07.29 학습개발일지 / C++ Study4  (2) 2025.07.30
25.07.27 학습개발일지 / C++ Study3  (3) 2025.07.30
25.07.25 개발일지 / 빌드 및 Make  (3) 2025.07.29
25.07.24 학습개발일지 / C++  (5) 2025.07.29
'LMS 7/개발일지' 카테고리의 다른 글
  • 25.07.30 개발학습일지 / C++ Study4(chapter 5, chapter 6)
  • 25.07.29 학습개발일지 / C++ Study4
  • 25.07.27 학습개발일지 / C++ Study3
  • 25.07.25 개발일지 / 빌드 및 Make
m_Dev
m_Dev
  • m_Dev
    m_Dev
    m_Dev
  • 전체
    오늘
    어제
    • 분류 전체보기
      • MAIN STUDY
        • 정보보안
        • 빅데이터
        • 정보처리
        • 컴퓨터 구조
        • 기타
      • JOB
        • Study
        • Project
      • LMS 7
        • 개발일지
      • FRAMEWORK
        • Qt
        • MFC
        • Winform
        • WPF
        • MAUI
      • NETWORK
        • Study
        • Assignment
      • PYTHON
        • Set
        • Study
        • Assignment
        • Project
      • C
        • Set
        • Study
        • Assignment
        • Project
      • C++
        • Set
        • Study
        • Assignment
        • Project
      • C#
        • Set
        • Study
        • Assignment
        • Project
      • DATABASE
        • MySQL
        • SQLite
      • IDE
        • VisualStudioCode
        • VisualStudio
        • Pycharm
        • Colab
      • 기타
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
m_Dev
25.07.28 학습개발일지 / Makefile+
상단으로

티스토리툴바