대규모 프로젝트에서 make 사용하기

MySprtlty·2022년 7월 12일
0

make utility

목록 보기
12/12
post-thumbnail

🏷️대규모 프로젝트에서 make 사용하기

📌개념

  • 프로젝트 규모가 커져서 소스를 여러 디렉터리에 나누어 관리해야 할 때, 어떻게 make를 사용하면 좋을까?
  • 이에 관련하여 방법이 크게 3가지 있다.
  1. 하나의 Makefile에서 일일이 경로를 지정하는 방법
  2. VPATH를 사용하는 방법
  3. 재귀적인 make를 사용하는 방법

📌VPATH를 사용하는 방법

  • VPATH매크로에 디렉터리를 지정하게 되면, make가 소스 파일을 찾을 때 현재 디렉터리와 함께 VPATH에 등록된 디렉터리에서까지 찾게 된다.
  • 🔍ex)
VPATH = dir1 dir2 dir3

calc : add.o sub.o main.o
	$(CC) -o $@ $^
  • 그러나 VPATH는 파일명에 종속적이라서 프로젝트 규모가 크다면 재귀적인 make를 사용하는 것이 낫다.

📌재귀적인 make

개념

  • 소스가 존재하는 각 서브 디렉터리에도 Makefile을 두고, 최상위 디렉터리에 있는 Makefile에서 서브 디렉터리의 Makefile을 재귀적으로 호출하는 방법이다.
  • 🔍ex)
OBJECTS = add.o sub.o main.o

all : dir1 dir2 dir3 calc

dir1 :
	cd dir1 && make
    
dir2 :
	cd dir2 && make
    
dir3 :
	cd dir3 && make
    
calc : $(OBJECTS)
	$(CC) -o $@ $^
  • 최상위 디렉터리에 Makefile이 존재하고, 서브 디렉터리인 dir1, dir2, dir3에 각각 Makefile이 존재하는 환경이다.

서브 Makefile로 매크로 전달

  • export키워드를 이용하여, 서브 Makefile로 현재 Makefile에 정의된 매크로를 전달할 수 있다.
  • 🔍ex)
export CC = gcc

all : dir1 dir2 dir3 calc

...(생략)
  • export키워드로 정의된 CC매크로는 서브 Makefile에 전달된다.
  • 서브 Makefile에서 $(CC)CC매크로를 호출한다면, gcc가 될 것이다.
  • 상위 Makefile부터 실행되어, 하위 Makefile로 실행되어 가는 구조다.

0개의 댓글