Linux

[make] Makefile 실행

비번변경 2022. 3. 1. 00:05

make

Unix/Linux에 포함되어 있는 명령어로, 파일 관리 유틸리티 소프트웨어다.

Makefile이라는 파일을 참조하여 컴파일러에 명령을 전달하며, 파일에 기술된 shell 명령어가 순차적으로 실행될 수 있도록 한다.

 

주로 컴파일 명령어를 기술하여, 여러 개의 소스파일을 대상으로 여러 단계의 컴파일 과정을 한 번에 진행한다.

 

Makefile

make 명령으로 실행할 명령을 기술한 파일

목적 파일, 재료 파일, 명령어와 매크로가 매크로가 기술되어 있다.

 

구조

CC = gcc # 매크로 정의. CC는 컴파일러를 뜻한다.

# 타겟절. 규칙 정의
# 목적 파일 : 의존성
	# 명령어
    
target 1 : dependency1 dependency2 
	cmd1
	cmd2
    
target 2 : dependency3 dependency4 dependency5
	cmd3
	cmd4
  • target : 빌드 대상. 명령에 의해 생성되는 결과
  • dependency : 대상 생성 시 의존하는 파일. 의존 파일을 먼저 생성한 후, 빌드 대상을 생성한다.
  • cmd : 빌드 대상을 생성하는 명령

 

더미 타켓

파일을 생성되지 않는 개념적인 타겟을 의미한다.

 

예시

clean:
	rm -rf *.o

 

실행 방법

cd /path

# 제일 처음의 타겟만을 실행
make 

# target 지정하여 실행
make <TARGET>

 

동작 절차

1. make 명령 호출 시 경로 내의 Makefile을 찾는다.

2. Makefile에서 첫 타겟을 찾는다.

3. dependency를 확인하고, dependency 파일이 없으면 해당 dependency 파일을 생성한다.

 

 

+

주로 c 컴파일 사용이나 설치 등을 위해 사용하는 것 같은데 내가 경험한 사용 사례는 더미 타켓을 이용하여 docker image build 및 push를 간편화 한 것이었다.

그 예시는 다음과 같다

all : build push

build :
	docker build /<path> -t <image_name>
    
push :
	docker push <image_name>

 


참고 문서

https://dobby-the-house-elf.tistory.com/109

https://mintnlatte.tistory.com/429?category=433180