Makefile은 큰 프로그램의 어느 부분을 다시 컴파일해야 하는지 결정하는 데 사용된다. 대부분의 경우 C 또는 C++ 파일이 컴파일된다. 다른 언어에는 일반적으로 Make와 유사한 목적을 수행하는 자체 도구가 있다. Make는 변경된 파일에 따라 일련의 지침을 실행해야 하는 경우 컴파일을 넘어서도 사용할 수 있다.
다음은 Make로 빌드할 수 있는 종석성 그래프의 예이다. 파일의 종속성이 변경되면 파일이 다시 컴파일된다.
C/C++ 대체 빌드 시스템은 SCons, CMake, Bazel, Ninja다. Visual Studio와 같은 일부 편집기에는 자체 빌드 도구가 있다. Java의 경우 Ant, Maven, Gradle이 있다. Go 및 Rust와 같은 다른 언어에는 자체 빌드 도구가있다.
Python, Ruby, Javascript와 같은 인터프리터 언어에는 Makefile과 유사한 것이 필요하지 않는다. Makefiles의 목표는 변경된 파일을 기반으로 컴파일해야 하는 모든 파일을 컴파일하는 것이다. 그러나 인터프리터 언어로 된 파일이 변경되어도 다시 컴파일할 필요가 없다. 프로그램이 실행되면 가장 최신 버전의 파일이 사용된다.
hello:
echo "Hello World"
man make
output
MAKE(1) User Commands MAKE(1)
NAME
make - GNU make utility to maintain groups of programs
SYNOPSIS
make [OPTION]... [TARGET]...
...
target: 전제조건
command
command
command
C 파일을 컴파일하는 Makefile
blah: blah.o
cc blah.o -o blah # 3번째 실행
blah.o: blah.c
cc -c blah.c -o blah.o # 2번째 실행
blah.c:
echo "int main() { return 0; }" > blah.c # 첫번째 실행