make 를 사용할 때, 중간 중간의 메시지에 color를 넣어서 가독성을 높이기 위해서 사용된다.
두 가지 방법이 있는데..
첫 번째는 sed를 이용해서 make 동작 중에 pipe(|)사용하여 바꾸는 방법이 있고, 두 번째는 Makefile 안에 echo 항목에 color를 넣는 방법이 있다. 둘을 적절하게 사용하면 원하는 화면을 얻을 수 있을 것이다.
아래는 make 에서 활용할 수 있는 color를 variable에 담은 것이다.
이들을 적절하게 섞어서 사용하는 것이다.
물론, 더 많은 색상을 사용할 수 있다. (참고, http://misc.flogisoft.com/bash/tip_colors_and_formatting)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
BG_BLACK = \e[40m BG_RED = \e[41m BG_GREEN = \e[42m BG_YELLOW = \e[43m BG_BLUE = \e[44m BG_MAGENTA = \e[45m BG_CYAN = \e[46m BG_LGREY = \e[47m BG_DGREY = \e[100m BG_LRED = \e[101m BG_LGREEN = \e[102m BG_LYELLOW = \e[103m BG_LBLUE = \e[104m BG_LMAGENTA= \e[105m BG_LCYAN = \e[106m BG_WHITE = \e[107m FG_BLACK = \e[30m FG_RED = \e[31m FG_GREEN = \e[32m FG_YELLOW = \e[33m FG_BLUE = \e[34m FG_MAGENTA = \e[35m FG_CYAN = \e[36m FG_LGREY = \e[37m FG_DGREY = \e[90m FG_LRED = \e[91m FG_LGREEN = \e[92m FG_LYELLOW = \e[93m FG_LBLUE = \e[94m FG_LMAGENTA= \e[95m FG_LCYAN = \e[96m FG_WHITE = \e[97m CL_BOLD = \e[1m CL_DIM = \e[2m CL_UDLINE = \e[4m CL_BLINK = \e[5m CL_INVERT = \e[7m CL_HIDDEN = \e[8m NO_COLOR = \e[0m |
사용 법은 아래와 같다.
예를 들어, 노란색 배경에 파란색 글씨를 넣고, 이를 깜빡이게 하고 싶다면,
C_EXAM = ${CL_BLINK}${BG_YELLOW}${FG_BLUE}
와 같이 C_EXAM을 지정하고, 아래와 같이 사용하면 된다.
1 2 |
target : @echo -e "${C_EXAM} TEST ${NO_COLOR}" |
다음으로는 sed를 활용한 방법을 알아보자,
$ make <target> | sed -e <치환> 요렇게 해주면 되는데 예제를 보면 간단하다. 물론, sed를 잘 사용한다면 더 좋을 것 같긴하다.
필자는 make 안에서 make를 호출할 때 sed를 사용한다.
예제는 아래와 같다.
1 2 3 4 5 6 7 8 |
# make 수행 중에 발생하는 make 라는 글자에 대해 # Red 배경에 White 글자로 바꾸려한다. MAKE_COLOR = s/^make/\x1b[41;97;1m&\x1b[0m/ target : cd sim && \ make <another_target> | sed -e "${MAKE_COLOR}" |