<aside> 💡 Makefile, make 기초를 먼저 보는 것을 권장합니다.

</aside>

파일을 플래그로 사용하기

make는 파일이 최신 상태인지 확인할 때 파일이 마지막으로 수정된 시각을 비교합니다.

이 점을 이용해서 파일을 플래그로 사용할 수 있습니다.

예시 - 같은 이름의 target

예시로 make allmake bonus가 같은 이름의 target을 생성하는 경우를 보겠습니다.

all: $(OBJS_MANDATORY)
    $(CC) -o $(TARGET) $^
bonus: $(OBJS_BONUS)
    $(CC) -o $(TARGET) $^
.PHONY: all bonus

make all을 실행한 후에 make all을 다시 실행하면 아무 일도 일어나지 않길 원할 수 있습니다.

마지막으로 $(TARGET)을 만든 규칙이 all인지 bonus인지 나타내는 플래그를 만들어 보겠습니다.

LAST_ALL이라는 파일이 있으면 $(TARGET)all로 만든 것입니다.

LAST_BONUS이라는 파일이 있으면 $(TARGET)bonus로 만든 것입니다.

규칙을 이렇게 정하면 쉽게 목적을 달성할 수 있습니다.

all: LAST_ALL
bonus: LAST_BONUS
.PHONY: all bonus

LAST_ALL: $(OBJS_MANDATORY)
    rm -f LAST_BONUS
    $(CC) -o $(TARGET) $^
    touch $@
LAST_BONUS: $(OBJS_BONUS)
    rm -f LAST_ALL
    $(CC) -o $(TARGET) $^
    touch $@

Makefile을 이렇게 작성하면 마지막으로 $(TARGET)을 만든 규칙이 뭔지에 따라서 동작이 달라집니다.

마무리

파일을 플래그로 사용하는 것은 수많은 응용 방법 중 하나입니다.

파일을 플래그로 사용하기 위해 특별한 문법이 사용된 것도 아닙니다.

make는 단순하지만 강력한 도구입니다! 다양한 작업에 make를 활용할 수 있을 거에요 🙂