Makefile 이란?
파일 간의 종속관계를 파악하고 Makefile(기술 파일)에 적힌 대로 SHELL 명령이 순차적으로 실행되게 해주는 명령어입니다.
Makefile 작성법
Makefile에서 반복되는 구조인 Rule block의 구조는 다음과 같습니다.
<Target>: <Dependencies>
<Recipe>
- Target: 빌드 대상 이름. 통상 이 Rule에서 최종적으로 생성해내는 파일명을 써 줍니다.
- Dependencies: 빌드 대상이 의존하는 Target이나 파일 목록. 여기에 나열된 대상들을 먼저 만들고 빌드 대상을 생성합니다.
- Recipe: 빌드 대상을 생성하는 명령. 여러 줄로 작성할 수 있으며, 각 줄 시작에 반드시 Tab 문자로 된 Indent가 있어야 합니다.
Make에서는 자주 사용되는 빌드 규칙들은 내장을 해서 굳이 기술하지 않아도 자동으로 처리해 줍니다. 소스 파일(.c)을 컴파일해서 Object 파일(.o)로 만들어 주는 규칙이 여기에 해당합니다. 즉, Makefile에 다음 두 줄만 써도 app.out을 빌드 할 수 있습니다.
Makefile 사용 예시
계산기 프로그램과 구구단 프로그램 둘 다 컴파일 할 수 있도록 Makefile을 작성했습니다. 계산기 프로그램은 정적 라이브러리를 사용했습니다.
위처럼 make의 기본은 계산기 프로그램으로 컴파일이 되고, make gugudan
으로 옵션을 변경하면 구구단 프로그램이 컴파일 됩니다.
아래는 실행 결과입니다.