Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
Tags
- pagefile.sys
- jenkins
- gparted
- 소캣
- Shared Folder
- 문자형 디바이스 파일
- 디스크립터
- sprintf
- sscanf
- fscanf
- DMA
- 젠킨스
- HDR
- 멀티프로세싱
- 프레임버퍼
- interrupt handler
- 디스크 축소
- 환경 변수
- 속도저하
- context
- memcmp
- intents
- layouts
- usb2.0
- makefile
- context switch
- fprintf
- interrupt context
- activities
- ubuntu
Archives
- Today
- Total
do{학습}while
YOCTO) 기본 문법 본문
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는 테스크는 독립된 쉘 환경에서 실행되기 때문에, 한 테스크 내에서 변경한 전역 변수는 다른 테스크에 영향을 주지 않음.
'YOCTO' 카테고리의 다른 글
| YOCTO) GitHub에서 fetch하기 vs 로컬 디렉토리에서 fetch하기 (0) | 2025.03.30 |
|---|---|
| YOCTO) 자주 사용하는 디버깅 명령어 (0) | 2025.03.23 |
| YOCTO) 메타 데이터 종류, 메타 데이터 파일 종류 (0) | 2025.03.23 |
| YOCTO) 변수 cheat_sheet (0) | 2025.03.23 |
| YOCTO) Source를 fetch하는 방식 (0) | 2025.03.23 |