SW 설계/make

makefile에서 조건문과 변수할당 방법

yztech 2024. 12. 20. 06:47
반응형

이 Makefile의 코드에서 조건문과 변수 할당의 동작을 해석해보겠습니다:


코드 설명

ifeq (${ON},1)
    A = ON=1
endif
  1. ifeq (${ON},1):
    • 변수 ON의 값이 1인지 비교합니다.
    • ON1일 경우, 조건이 참이 되어 블록 내부의 코드가 실행됩니다.
  2. 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}"

실행 결과:

  1. ON = 1인 경우:
  2. ON = 1 A = ON=1
  3. ON != 1 또는 정의되지 않은 경우:
  4. ON = A =

참고

  1. 변수 참조 방식:
    • ${ON}은 변수 참조 시 사용하는 형태로, Makefile에서는 $(ON)이 더 일반적으로 사용됩니다.
    • 동일한 코드는 다음과 같이 작성해도 동일하게 동작합니다:
    • ifeq ($(ON),1) A = ON=1 endif
  2. 가독성:
    • 조건문 내부에서 변수 할당 시, 명확성을 위해 변수의 목적을 주석으로 설명하는 것이 좋습니다.

요약

  • 조건문 ifeq (${ON},1)은 변수 ON1인지 확인합니다.
  • 조건이 참일 때, A에 문자열 ON=1이 할당됩니다.
  • ifeq는 Makefile의 조건부 동작을 제어할 때 유용합니다.
반응형