정지용
기술스택 목록
도구

Makefile

프로젝트 1에서 사용했습니다. 각 프로젝트에서 어떤 역할로 썼는지 아래에 정리했습니다.

이 기술은 무엇인가요?

정해진 규칙에 따라 빌드·실행 명령을 자동화하는 작업 실행 도구

Makefile은 'make'라는 빌드 자동화 도구가 읽는 설정 파일로, 어떤 작업을 어떤 순서와 조건으로 실행할지 target-command 형태로 정의합니다. 원래는 C 프로그램 컴파일 순서를 관리하기 위해 만들어졌지만, 지금은 컴파일뿐 아니라 스크립트 실행, 배포, 테스트 등 반복되는 커맨드라인 작업을 표준화하는 용도로 널리 쓰입니다. 사람마다 다르게 입력하던 긴 명령어를 짧은 이름(target)으로 통일해, 실행 방법을 몰라도 문서처럼 참고할 수 있게 해줍니다.

이럴 때 사용합니다

  • 여러 단계의 커맨드를 한 번에 실행하는 진입점(entry point)이 필요할 때
  • 팀원마다 다르게 실행하던 빌드/배포 명령을 하나로 통일하고 싶을 때
  • 별도 런타임 설치 없이 셸 명령 자동화만 가볍게 하고 싶을 때
  • README에 나열된 실행 절차를 실행 가능한 형태로 문서화하고 싶을 때

핵심 개념

target
make 명령 뒤에 붙는 이름으로, 하나의 작업 단위를 가리킨다. 예를 들어 'make build'의 build가 target이다.
rule
target과 그것이 의존하는 파일(prerequisite), 그리고 실행할 명령(recipe)을 묶어 정의한 규칙이다.
recipe
target을 실행할 때 수행되는 셸 명령들로, 각 줄은 반드시 탭(tab) 문자로 들여써야 한다.
phony target
실제 파일을 생성하지 않고 이름 자체로 동작을 나타내는 target으로, .PHONY로 선언해 파일 존재 여부와 무관하게 항상 실행되게 한다.
variable
반복되는 값이나 경로를 이름에 담아 재사용할 수 있게 하는 Makefile 내부 변수다.

부트스트랩 스크립트 실행용 Makefile

'make bootstrap' 한 줄로 부트스트랩 스크립트를 실행하고, 'make clean'으로 정리 작업을 수행하는 예시다.

예시
# .PHONY: 실제 파일이 아닌 명령 이름임을 선언
.PHONY: bootstrap clean

bootstrap:
	@echo "클러스터 부트스트랩을 시작합니다..."
	./scripts/bootstrap.sh

clean:
	@echo "임시 리소스를 정리합니다..."
	rm -rf ./tmp

처음 쓸 때 흔한 함정

  • recipe 들여쓰기는 공백이 아닌 탭 문자여야 하며, 공백을 쓰면 오류가 난다
  • target 이름과 같은 파일이 실제로 존재하면 make가 실행을 건너뛸 수 있어 .PHONY 선언이 필요하다
  • 변수 확장 시점(=, :=)의 차이를 몰라 의도와 다른 값이 대입될 수 있다

위 개요는 기술 학습을 돕기 위해 자동 생성된 일반 설명입니다. 정확한 사양과 최신 정보는 공식 문서를 확인하세요.

프로젝트별 활용 방식

위 개념이 실제 프로젝트에서 어떻게 쓰였는지 보여줍니다.

함께 사용한 기술

위 프로젝트들에서 같이 쓰인 다른 기술입니다.