<aside> 💡 Makefile, make 기초를 먼저 보는 것을 권장합니다.
</aside>
make는 파일이 최신 상태인지 확인할 때 파일이 마지막으로 수정된 시각을 비교합니다.
이 점을 이용해서 파일을 플래그로 사용할 수 있습니다.
예시로 make all
과 make 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를 활용할 수 있을 거에요 🙂