Makefile 에서 if else 문 사용하기
Makefile 조건문
make 에서 조건문은 단순하고 은근히 까다롭다. 사용할 때 주의해서 사용하자.
Makefile 조건문의 지시어
- ifeq : 조건을 시작하고 조건을 지정한다. 콤마로 분리되고 괄호로 둘러싸인 두 개의 매개변수를 가진다.
- else : 이전 조건이 실패하였다면 수행되도록 한다. else 지시어는 사용하지 않아도 된다.
- endif : 조건을 종료한다. 모든 조건은 반드시 endif로 종료해야 한다.
Makefile 조건문 예시
libs_for_gcc = -lgnu
normal_libs =
foo: $(objects)
ifeq ($(CC),gcc)
$(CC) -o foo $(objects) $(libs_for_gcc)
else
$(CC) -o foo $(objects) $(normal_libs)
endif
변수 'CC'가 'gcc' 일 때 조건이 참이므로, ifeq 아래의
$(CC) -o foo $(objects) $(libs_for_gcc)
가 수행되며, 'gcc' 가 아닐 경우 조건이 거짓이므로, else 아래의
$(CC) -o foo $(objects) $(normal_libs)
가 수행된다.
Makefile 다중 조건문(중첩 조건)
기본적으로, make 에서 다중 조건문은 존재하지 않는다.
AND(&&) 또는 OR(||) 를 사용할 수 없는데, filter
를 활용해 어느 정도 변형하여 사용할 수 있는 듯하다.
참고 : Stackoverflow - makefile-ifeq-logical-or
주의사항
조건문을 사용할 때 지시어들을 들여쓰기(indent) 하지 말자. <syntax error near unexpected token>
와 같은 에러가 날 수 있다.
참고 자료
728x90
반응형
'Back-End > Linux' 카테고리의 다른 글
[Linux] screen 명령어 사용법(터미널 가상화?) (0) | 2021.06.13 |
---|---|
[Linux] ls 명령어 사용법 (0) | 2021.06.05 |
[Linux] 공유 메모리 함수, shmget(), shmat(), shmctl(), shmdt() (0) | 2021.05.26 |
[Linux] tar 명령어 사용법 (0) | 2021.05.01 |
[Linux] grep 명령어 사용법 (0) | 2021.02.03 |