how to use makefile

Makefile 작성 방법

Makefile은 C/C++ 프로젝트에서 컴파일 및 빌드 과정을 자동화하기 위해 사용되는 텍스트 파일입니다. Makefile을 작성하면 여러 파일 간의 의존성을 관리하고, 변경된 파일만 재빌드하여 시간을 절약할 수 있습니다. 이번 포스트에서는 Makefile 작성을 위한 기본적인 내용에 대해 알아보겠습니다.

Makefile의 구성

  1. 주석 문법

Makefile에 주석을 작성할 때는 #을 시작으로 사용합니다. 주석은 Makefile의 가독성과 코드 이해에 도움을 줍니다.

  1. 변수 (Variables)

Makefile에서는 변수를 $() 또는 ${} 안에 넣어 사용합니다. 변수는 다양한 값을 저장하고 이를 참조하는 데 사용됩니다.

  1. 타겟 (Targets)

타겟은 Makefile에서 첫 번째 역할을 담당하며, 타겟은 특정한 작업을 실행하는 규칙을 정의합니다.

  1. 의존성 (Dependencies)

의존성은 타겟에 대한 필수 조건(파일, 타겟)을 지정하는 것을 말합니다. 의존성이 해결되지 않으면 해당 타겟은 실행되지 않습니다.

  1. 명령어 (Commands)

명령어는 타겟이 실행될 때 실제로 수행되어야 하는 명령문을 의미합니다. 각 명령어는 탭으로 시작해야 합니다.

예시 Makefile

“`makefile

변수 정의

CC = gcc
CFLAGS = -Wall -O2
LIBS = -lm

기본 타겟 정의

all: program

프로그램 빌드 규칙

program: main.o helper.o
$(CC) $(CFLAGS) -o program main.o helper.o $(LIBS)

main 파일 컴파일 규칙

main.o: main.c
$(CC) $(CFLAGS) -c main.c

helper 파일 컴파일 규칙

helper.o: helper.c helper.h
$(CC) $(CFLAGS) -c helper.c

clean 타겟 규칙

clean:
rm -f *.o program
“`

위의 예시 Makefile은 C 프로젝트에서 main.chelper.c 파일을 컴파일하여 program이라는 실행 파일을 생성하는 규칙을 정의합니다. CFLAGS 변수는 컴파일 옵션을 설정하고, LIBS 변수는 필요한 라이브러리를 지정합니다. all은 기본 타겟으로 program을 의존성으로 갖고 있어, make 명령어만 실행해도 program을 빌드할 수 있습니다. clean 타겟은 빌드 과정에서 생성된 .o 파일과 program 실행 파일을 삭제하는 규칙을 정의합니다.

위와 같이 Makefile을 작성하고 make 명령어를 실행하면, program이라는 실행 파일이 생성됩니다.

이상으로 Makefile 작성 방법에 대해 알아보았습니다. Makefile은 프로젝트의 규모가 커질수록 더욱 유용해집니다. 관심 있는 분야에서 적절히 활용하여 쉽고 편리한 빌드 프로세스를 구성해보세요.