원래는 큰 시스템 안에서 어떤 부분이 recompiled되어야 하는지 결정하기 위해 사용되었다. 특히 C와 C++ 계열에서.. 다른 언어들은 Make의 이런 역할을 하는 비슷한 도구들이 이미 있음.
그런데 Make는 이제 컴파일에만 쓰이지 않게 되었음. 특정 파일이 변경됨에 따라, 몇가지 명령어를 연속적으로 실행해야 할때도 Make가 쓰인다.
왜냐면 원래 목적이 특정 의존성 파일이 수정되었을 때 다시 컴파일 하도록 명령하는 거였으니까.
C/C++ 빌드 시스템의 대안은 사실 SCons, CMake, Bazel, Ninja 등 많음. 자바로 치면 Ant, Maven, Gradle이 하는 역할임.
Makefile의 목적은 뭐든지간에 특정 파일이 바뀌었을때, 다시 재컴파일 하는 것임. 그래서 python, ruby, js와 같은 인터프리터 언어에는 이런 파일이 필요없다. 파일 내부가 변경되어도 애초에 컴파일을 안하니까.
make를 사용하기 위해선 터미널에 ‘make’ 가 설치되어있어야 한다. 그리고 make
라는 명령어로 메이크파일을 실행한다.
targets: prerequisites
command
command
command
target:
은 아래 일련의 command에 대한 타겟 파일 이름임.command
는 일련의 스크립트 단계(recipe 라고도 한다.)로, 반드시 \\t
즉 공백이 아니라 탭으로 시작해야 함. (GNU Make의 문법)prerequisites
는 해당 파일이 의존하는 다른 파일(의존성 파일) 이름임.makefile
, Makefile
, GNUmakefile
이어야 함.