Makefile diagram
- 위 그림에서
Stuff to execute
에 해당하는 부분은 shell 명령어를 작성하는 곳이라서 shell if문 문법을 알면 사용할 수 있다.
쉘 if문 사용하기
shell 에서 if문을 사용하는 방법은 다음과 같다
#! /bin/bash
if [ 값1 조건문 값2 ]; then
수행문
fi
- 띄어쓰기도 위와 같이 모두 맞춰주지 않는다면 스크립트 에러가 난다.
- 쉘 명령어
[
: test 유틸리티이다.
man test
- test expression ➡
[ expression ]
- expression이 참인지 아닌지 평가한다.
- 참이면 exit status는 0, 거짓이면 exit status는 1이 된다.
- 여기 에서 참고.
쉘의 if 조건문 종류
[ -z ] : 문자열의 길이가 0이면 참
[ -n ] : 문자열의 길이가 0이 아니면 참
# [ 숫자 조건 숫자 ]
[ -eq ] : 값이 같으면 참
[ -ne ] : 값이 다르면 참
[ -gt ] : 값1 > 값2
[ -ge ] : 값1 >= 값2
[ -lt ] : 값1 < 값2
[ -le ] : 값1 <= 값2
[ -a ] : &&연산과 동일
[ -o ] : ||연산과 동일
[ -d ] : 파일이 디렉토리면 참
[ -e ] : 파일이 있으면 참
[ -L ] : 파일이 심볼릭 링크면 참
[ -r ] : 파일이 읽기 가능하면 참
[ -s ] : 파일의 크기가 0 보다 크면 참
[ -w ] : 파일이 쓰기 가능하면 참
[ -x ] : 파일이 실행 가능하면 참
[ 파일1 -nt 파일2 ] : 파일1이 파일2보다 최신파일이면 참
[ 파일1 -ot 파일2 ] : 파일1이 파일2보다 이전파일이면 참
[ 파일1 -ef 파일2 ] : 파일1이 파일2랑 같은 파일이면 참
출처: https://jink1982.tistory.com/48 [돼민이]
예제
if [ -d file1 -a -d file2 ]; then
echo "hello";
fi
file1 디렉토리와 file2 디렉토리가 모두 있을 때만 Hello 를 출력해라
Makefile에 적용하기
한가지 주의해야 할 점은 Makefile 내에서 줄바꿈이 있을 경우 모두 \
(역슬래쉬) 로 줄바꿈 처리를 해줘야 한다.
$(NAME) : $(OBJS)
@if [ ! -d pipe ]; then \
mkdir pipe; \
fi
$(CC) $(CFLAGS) $(OBJS) $(LIB) -o $(NAME)
위 @
표시는 Makefile의 echoing 기능을 끄는 역할을 한다. 이 기능 관련해서는 여기 에서 더 볼 수 있다.
'Programming Skills > Makefile' 카테고리의 다른 글
[Makefile] 출력 숨기기 (0) | 2021.05.29 |
---|