do{학습}while

YOCTO) 기본 문법 본문

YOCTO

YOCTO) 기본 문법

하이오야이 2025. 3. 29. 22:35

Yocto Dunfell 기준으로 간단하게 정리


🔧 기본 문법 정리 (Yocto / BitBake 기준)

1. 변수 설정

문법 설명

VAR = "value" 지연 할당: 파싱 시점에 값 할당. 다른 확장된 변수로 다시 확장될 수 있음.
VAR := "value" 즉시 할당: 파싱 시점에 즉시 값을 확정. 이후 참조에 영향 없음.
VAR ?= "value" 기본값 할당: VAR이 아직 정의되지 않았을 때만 할당.
VAR ??= "value" 약한 기본값 할당: 레시피에서 기본 설정처럼 사용됨. 보통 bitbake.conf 쪽에서 많이 씀.

2. 변수 확장

문법 설명

${VAR} 변수 참조. 다른 변수나 경로 등에서 주로 사용.
"${VAR}/something" 문자열 내 확장. 경로나 이름 연결할 때 자주 씀.

3. 변수 조작

문법 설명

VAR += "something" 선입 추가: 기존 값 뒤에 추가, 앞에 공백 있음.
VAR =+ "something" 후입 추가: 새로운 값을 기존 값 앞에 추가, 공백 있음.
VAR .= "something" 공백 없이 선입
VAR =. "something" 공백 없이 후입
VAR_append = "something" 기존 값 뒤에 공백 없이 붙임.
VAR_prepend = "something" 기존 값 앞에 공백 없이 붙임.
VAR_remove = "something" 값에서 해당 항목 제거.

📌 += 와 _append 같이 쓰는 이유
BitBake의 우선순위 때문에 _append가 +=보다 나중에 적용됨.
따라서 둘 다 쓸 경우 명확하게 순서 조절할 수 있음.


4. 함수 조작

문법 설명

do_configure_append() do_configure 함수 끝에 내용 추가
do_compile_prepend() do_compile 함수 앞에 내용 추가
python do_install_append() 파이썬 함수 버전도 동일하게 사용 가능
📌문법의 변화가 존재함
:append, :prepend, :remove 같은 플래그 스타일 구문
BitBake 2.0 (Yocto Thud (2.6) 이후)에서 공식적으로 사용되기 시작했어.
하지만 Yocto Dunfell (2.0.4)에서도 여전히 _append 방식이 널리 사용됨.

 

 


5. 연산자 우선순위 (대략적인 순서)

<우선순위 높음>   := , =  , ?= , ??=     <우선순위 낮음>

:=이 가장 먼저 적용되고, ??=가 가장 마지막에 적용됨.


6. 테스크 간 변수 공유

  • 레시피에 전역 변수 MY_VAR = "abc"가 있고,
  • do_configure에서 MY_VAR = "xyz"로 바꾸더라도,
  • do_compile에서 MY_VAR를 참조하면 여전히 "abc"로 나옴.

BitBake는 테스크는 독립된 쉘 환경에서 실행되기 때문에, 한 테스크 내에서 변경한 전역 변수는 다른 테스크에 영향을 주지 않음.