반응형
이 Makefile의 코드에서 조건문과 변수 할당의 동작을 해석해보겠습니다:
코드 설명
ifeq (${ON},1)
A = ON=1
endif
ifeq (${ON},1)
:- 변수
ON
의 값이1
인지 비교합니다. ON
이1
일 경우, 조건이 참이 되어 블록 내부의 코드가 실행됩니다.
- 변수
A = ON=1
:- 조건이 참일 때 변수
A
에 문자열ON=1
을 할당합니다. 여기서주의할 점
은 참조변수${ON}
이 아닌 ON이므로 문자열ON=1
이 들어간다. - Makefile에서 변수의 값은 지연 평가되므로, 변수 할당은 조건이 참인 경우에만 발생합니다.
- 조건이 참일 때 변수
상황별 동작
ON = 1
인 경우:변수A
는 문자열ON=1
을 가지게 됩니다.A = ON=1
ON != 1
또는 정의되지 않은 경우:- 조건이 거짓이므로
A
는 아무 값도 할당받지 않습니다.
- 조건이 거짓이므로
확인용 전체 예제
ON = 1
ifeq (${ON},1)
A = ON=1
endif
all:
@echo "ON = ${ON}"
@echo "A = ${A}"
실행 결과:
ON = 1
인 경우:ON = 1 A = ON=1
ON != 1
또는 정의되지 않은 경우:ON = A =
참고
- 변수 참조 방식:
${ON}
은 변수 참조 시 사용하는 형태로, Makefile에서는$(ON)
이 더 일반적으로 사용됩니다.- 동일한 코드는 다음과 같이 작성해도 동일하게 동작합니다:
ifeq ($(ON),1) A = ON=1 endif
- 가독성:
- 조건문 내부에서 변수 할당 시, 명확성을 위해 변수의 목적을 주석으로 설명하는 것이 좋습니다.
요약
- 조건문
ifeq (${ON},1)
은 변수ON
이1
인지 확인합니다. - 조건이 참일 때,
A
에 문자열ON=1
이 할당됩니다. ifeq
는 Makefile의 조건부 동작을 제어할 때 유용합니다.
반응형
'SW 설계 > make' 카테고리의 다른 글
makefile 기초: 변수, 패턴 규칙, 자동 변수 (0) | 2021.10.19 |
---|---|
makefile 기초: 소개 및 실행 과정 (0) | 2021.10.19 |
makefile 사용시 유용한 팁들! (0) | 2021.10.12 |