[Linux] Makefile 사용해 프로젝트 빌드하기

알린·2023년 10월 25일
0

Linux

목록 보기
6/14

프로젝트 빌드

make

  • 파일 관리 유틸리티

  • 각 파일에 대한 반복적 명령을 자동화시킨 것(Makefile에 기술된 대로 shell 명령을 순차적으로 내림)

  • make 명령 내리기 전에 rm -rf *.o [타겟] 명령어로 이전에 컴파일 된 파일 지우기

Makefile

  • make -p : make 내부에 정의된 매크로 리스트들이 나열됨

매크로 리스트

매크로정의
CCgcc
CFLAGSgcc의 옵션 세팅(ex. -W -Wall)
ASas

자동 매크로 리스트

매크로정의
$?현재의 타겟보다 최근에 변경된 종속 항목 리스트 (확장자 규칙에서 사용 불가)
$^현재 타겟의 종속 항목 리스트 (확장자 규칙에서 사용 불가)
$@현재 타겟의 이름
$<현재 타겟보다 최근에 변경된 종속 항목 리스트 (확장자 규칙에서만 사용 가능)
$*현재 타겟보다 최근에 변경된 현재 종속 항목의 이름 (확장자 규칙에서만 사용 가능)

확장자 규칙

  • .SUFFIXES : make 파일에게 처리할 파일들의 확장자를 등록
    ex)
    .SUFFIXES : .o .c
    %.o : %.c => .o와 대응되는 .c를 발견하면 아래 명령을 수행한다.
    [tab]$(CC) -DDEBUG -c -o $@ $<

make 함수 사용

  • 와일드카드 매칭기법

    $(wildcard .c) : 현재 디렉토리에서 .c와 파일명이 일치하는 파일을 찾아 공백 구분 문자로 매크로에 정의

  • 대입 참조기법

    $(매크로명: .c= .o) : 확장자 .c가 .o로 바뀜

  • patsubst

    $(patsubst %.c, %.o, $(wildcard .c)) : $(wildcard .c)의 결과에 대해서 %.c와 매칭되는 것을 %.o로 바꿈

더미 타겟 사용

  • Makeflie 가장 마지막에

clean :
[tab]rm -rf *.o [타겟명]

profile
Android 짱이 되고싶은 개발 기록 (+ ios도 조금씩,,👩🏻‍💻)

0개의 댓글