본문 바로가기
언어 정리/빌드툴(catkin_make,make,cmake)

Make Makefile 설명 및 문법

by 알 수 없는 사용자 2023. 1. 2.

참고 :

https://www.tuwlab.com/ece/27193

 

[Make 튜토리얼] Makefile 예제와 작성 방법 및 기본 패턴 - ECE - TUWLAB

리눅스 환경에서 소스코드를 다운받아서 수동으로 프로그램 설치를 해 보신 분들은 다음 세 줄의 명령어에 매우 익숙할 것입니다. ./configure make sudo make install 근래에는 make 외에 다른 빌드툴들이

www.tuwlab.com

 


Make 파일 생긴 이유 부터 :

 

원래는
gcc -c -o main.o main.c
gcc -c -o foo.o foo.c
gcc -c -o bar.o bar.c
-c 옵션으로 컴파일을 해서 .o (object)파일을 만들고

gcc -o app.out main.o foo.o bar.o

.o(object)파일을 실행파일로 변환 해주는 작업이 필요함

 

실행 결과 파일들 [ main.o foo.o bar.o app.out ]

 

------------------>

 

노가다인 부분들 떄문에 나온게 make

make 란 - Makefile을 작성해서 위의 작업들을 한번에 실행시키는 방식

"

app.out: main.o foo.o bar.o
    gcc -o app.out main.o foo.o bar.o


main.o: foo.h bar.h main.c
    gcc -c -o main.o main.c
 
foo.o: foo.h foo.c
    gcc -c -o foo.o foo.c
 
bar.o: bar.h bar.c
    gcc -c -o bar.o bar.c

"

이렇게 작성 후

$ make  <- 라고 치면 됨.

 

실행 결과 파일들 [ main.o foo.o bar.o app.out ]

 



Make 옵션 및 Makefile 작성법

 

$ make ##하면 Makefile 에 있는 스크립트 전부 실행

$ make foo.o ##치면 "gcc -c -o foo.o foo.c" 랑 같은 개념

<Target>: <Dependencies>
    <Recipe>
위의 명칭은 GNU make 공식 매뉴얼

Target: 빌드 대상 이름. 통상 이 Rule에서 최종적으로 생성해내는 파일명을 써 줍니다.
Dependencies: 빌드 대상이 의존하는 Target이나 파일 목록. 여기에 나열된 대상들을 먼저 만들고 빌드 대상을 생성합니다.
Recipe: 빌드 대상을 생성하는 명령. 여러 줄로 작성할 수 있으며, 각 줄 시작에 반드시 Tab문자로 된 Indent가 있어야 합니다.

 

$ make clean ##Makefile 내부에 clean에 대한 레시피를 정의해줘야한다.

 

아래의 가장 기본 Makefile 기본패턴을 보고 알 수 있다.

CC=<컴파일러>
CFLAGS=<컴파일 옵션>
LDFLAGS=<링크 옵션>
LDLIBS=<링크 라이브러리 목록>
OBJS=<Object 파일 목록>
TARGET=<빌드 대상 이름>
 
all: $(TARGET)
 
clean:
    rm -f *.o
    rm -f $(TARGET)
 
$(TARGET): $(OBJS)
$(CC) -o $@ $(OBJS)

 

 

 

 

 

 

 

'언어 정리 > 빌드툴(catkin_make,make,cmake)' 카테고리의 다른 글

CMake CMakeLists.txt 설명  (0) 2023.01.02
make -> cmake -> catkin_make  (1) 2023.01.02
CMakeLists 문법 with catkin_make  (0) 2022.12.31

댓글