스튜어트 펠드먼(Stuart Feldman)이 1976년에 만든 명세 언어.

역사

스튜어트는 우아한 아이디어를 생각해냈다. 프로그램의 조각들이 서로 어떻게 의존하는지 기술하는 명세 언어였다. 그가 Make(메이크)라고 부른 이 프로그램은 명세, 즉 makefile(메이크파일)을 분석하고 파일들이 변경된 시간 정보를 이용해서 모든 것을 최신으로 유지하는 데 필요한 최소한의 재컴파일을 수행했다. Make가 처음으로 구현된 것은 1976년이었다.

"저는 주말에 Make를 작성하고 그 다음 주말에 매크로를 이용해서 재작성했어요(내장된 코드의 목록이 너무 길어지고 있었거든요). '행 시작에 탭 문자 넣기'는 고치지 않았는데, 금세 십여 명의 열렬한 사용자가 생겼고 그들을 당황하게 만들고 싶지 않았기 때문입니다."

Make는 순식간에 성공을 거뒀다. 컴파일을 최대한 효율적으로 만들면서도 오만가지 어리석은 오류를 예방해주었기 때문이다. 1

Examples

  • 주의: Makefile은 인덴트에 탭 문자를 사용한다.

기본

h1:
	echo "hello world"
h2:
	echo "bye world"

Makefile을 위와 같이 작성하고 make 명령을 실행해보자.

make     # hello world 출력
make h1  # hello world 출력
make h2  # bye world 출력

배치 명령 실행

TESM=12000
CFLAGS=-Wall -g

test1:
	echo test 1?
test2:
	echo "${TESM}"

위와 같이 작성했다면 다음과 같이 실행할 수 있다.

make test1  # test 1? 이 출력된다
make test2  # 12000 이 출력된다

C 언어 컴파일

다음과 같은 내용의 hello.c 파일을 작성했다고 하자.

#include <stdio.h>

int main(int argc, char *argv[])
{
    printf("Hello, World\n");
    return 0;
}

다음과 같이 쉽게 컴파일 할 수 있다.

make hello

컴파일된 실행 파일을 지우기 쉽도록 clean을 등록하는 것도 방법이다.

CFLAGS=-Wall -g

clean:
	rm -f hello

참고문헌

  • 유닉스의 탄생 / 브라이언 커니핸 저/하성창 역 / 한빛미디어 / 2020년 08월 03일 / 원서 : UNIX: A History and a Memoir

주석

  1. 유닉스의 탄생. 5장.