참고 :
https://www.tuwlab.com/ece/27193
[Make 튜토리얼] Makefile 예제와 작성 방법 및 기본 패턴 - ECE - TUWLAB
리눅스 환경에서 소스코드를 다운받아서 수동으로 프로그램 설치를 해 보신 분들은 다음 세 줄의 명령어에 매우 익숙할 것입니다. ./configure make sudo make install 근래에는 make 외에 다른 빌드툴들이
www.tuwlab.com
Make 파일 생긴 이유 부터 :
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 |
댓글