Makefile

GAON PARK·2023년 11월 14일
0
post-custom-banner
  1. 코드 변경이 잦은 build 자동화 스크립트 작성에 필수
  2. 변경 사항이 일어난 것만 적용

장점

  1. build 자동화
  2. build 속도 최적화
    1. 불필요한 compile & assemble 피하기

설치

sudo apt install make -y

사용 방법

  1. Makefile 이라는 스크립트 파일 생성
    1. make 문법에 맞추어서 작성
    2. Bash Shell Script 문법과 다름
  2. 스크립트 실행
    1. 명령어: make
# Makefile

bluepink: blue.o pink.o main.o
	gcc blue.o pink.o main.o -o bluepink

blue.o: blue.c
	gcc -c blue.c

pink.o: pink.c
	gcc -c pink.c

main.o: main.c
	gcc -c main.c

makedepend

입력한 c 파일을 분석하여 의존성 헤더파일을 등록해주는 make 도우미

# 설치
sudo apt install xutils-dev

# 실행
# -Y 옵션: 분석할 파일 경로를 현재 디렉토리로 함
makedepend test1.c test2.c test3.c -Y

make script

명령어

  • @ : 수행할 명령어 입력을 생략하고 결과만 출력 -> 두 번 출력 막음
  • # : 주석
  • 매크로(변수)
    - $() 로 사용
    - 쌍따옴표까지 글자 그대로 들어감
    - 정의되지 않은 매크로는 빈칸으로 출력
    - += 대입 기호
    - 기호로 매크로 내용에 추가할 때마다 띄어쓰기 한 칸 자동 추가
    - := 대입 연산자 (Simple Equl)
    - script 순서대로 현재 기준에서 값을 넣음
    - = 대입 연산자 (Reculsive Equl)
    - 최종 변수 결과 값을 넣음
  • echo : 한 개의 띄어쓰기만 허용
  • $@ : Target
  • $^ : 의존성 파일
  • $< : 의존 파일 중 첫 번째 파일
# 최종 Makefile

CC = gcc 
CFLAGS = -g -Wall -O2 
SRCS = $(wildcard *.c) 
OBJS = $(SRCS:.c=.o) 
.SUFFIXES : .c .o 
TARGET = result 
 
all: $(OBJS) 
    @echo "==<FINISH>==" 
    $(CC) -o $(TARGET) $^ 
 
#.c .o: 
#   @echo "==[READY]==" 
#   $(CC) $(CFLAGS) -c $< 
 
clean: 
    rm $(OBJS) $(TARGET) 
 
dep: 
    makedepend $(SRCS) -Y 
 
 
# DO NOT DELETE 
 
test2.o: a.h c.h 
test3.o: a.h b.h c.h 
test1.o: a.h b.h

CMake

Makefile 을 자동 생성 할 수 있는 Build System

설치

sudo apt install g++ cmake -y

사용 방법

# 정확히 CMakeLists.txt 파일 생성
# 아래 내용 추가
ADD_EXECUTABLE([최종적으로 만들어질 실행 파일 이름] main.c blue.c pink.c)

# 실행
cmake.

# 이후 make 통해 build
post-custom-banner

0개의 댓글