Makefile, make 기초를 먼저 보는 것을 권장합니다.
파일을 플래그로 사용하기
make는 파일이 최신 상태인지 확인할 때 파일이 마지막으로 수정된 시각을 비교합니다.
이 점을 이용해서 파일을 플래그로 사용할 수 있습니다.
예시 - 같은 이름의 target
예시로 make all과 make bonus가 같은 이름의 target을 생성하는 경우를 보겠습니다.
all: $(OBJS_MANDATORY)
$(CC) -o $(TARGET) $^
bonus: $(OBJS_BONUS)
$(CC) -o $(TARGET) $^
.PHONY: all bonus
Makefile
복사
all과 bonus가 같은 $(TARGET)을 만드는 Makefile 예시
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
복사
make all 이후 make all을 하면 아무 일도 일어나지 않게 최적화한 Makefile
Makefile을 이렇게 작성하면 마지막으로 $(TARGET)을 만든 규칙이 뭔지에 따라서 동작이 달라집니다.
마무리
파일을 플래그로 사용하는 것은 수많은 응용 방법 중 하나입니다.
파일을 플래그로 사용하기 위해 특별한 문법이 사용된 것도 아닙니다.
make는 단순하지만 강력한 도구입니다! 다양한 작업에 make를 활용할 수 있을 거에요
같이 보면 좋은 글