Yocto 프로젝트에서 레시피 종속성 관리는 매우 중요한 부분이다. 올바른 종속성 관리는 빌드 시스템이 필요한 모든 패키지를 적절한 순서로 빌드할 수 있도록 보장한다. 종속성을 잘 관리하지 못하면 빌드 과정이 실패하거나 예기치 않은 동작을 유발할 수 있다.

DEPENDS 변수

레시피에서 다른 레시피에 대한 빌드를 명시적으로 의존하게 만들려면 DEPENDS 변수를 사용한다. DEPENDS 변수는 레시피가 빌드되기 전에 반드시 빌드되어야 하는 다른 레시피들을 나열한다.

DEPENDS = "recipe1 recipe2"

이 경우, recipe1recipe2가 현재 레시피가 빌드되기 전에 빌드되어야 한다.

RDEPENDS 변수

RDEPENDS는 런타임 종속성을 선언하는 데 사용한다. 패키지가 정상적으로 실행되기 위해 필요한 다른 패키지들을 나열한다.

RDEPENDS_${PN} = "runtime-package1 runtime-package2"

RRECOMMENDS 변수

RRECOMMENDS는 런타임에서는 필수가 아니지만, 가능하면 설치되는 것이 좋은 패키지들을 나열하는 데 사용된다.

RRECOMMENDS_${PN} = "optional-runtime-package1 optional-runtime-package2"

BBCLASSEXTEND

BBCLASSEXTEND 변수는 특정 레시피가 여러 가지 빌드 타입을 지원할 수 있도록 한다. 예를 들어, native 또는 nativesdk 빌드를 지원하도록 할 수 있다.

BBCLASSEXTEND = "native nativesdk"

PACKAGECONFIG

PACKAGECONFIG 변수는 조건부 종속성과 패키지 구성을 관리하는 데 사용된다. 특정 기능이나 옵션을 활성화하거나 비활성화할 수 있다.

PACKAGECONFIG = "option1 option2"
PACKAGECONFIG[option1] = "--enable-option1,--disable-option1,dep1,rec1"
PACKAGECONFIG[option2] = "--enable-option2,--disable-option2,dep2,rec2"

위 예제에서 option1option2는 옵션 이름이며, 각 옵션별로 구성 플래그와 종속성 및 추천 패키지를 정의한다.

LAYER DEPENDS

레이어 간에도 종속성을 관리할 수 있다. 이를 통해 특정 레이어가 다른 레이어에 의존함을 명시할 수 있다. conf/layer.conf 파일에서 이 정보를 설정할 수 있다.

LAYERDEPENDS_layername = "required-layer"

추가 종속성 관리 변수들

요약하자면, Yocto 프로젝트에서 종속성 관리는 다양한 변수를 통해 제어한다. 각 변수는 레시피 간의 빌드 순서, 런타임 의존성, 선택적 기능 등을 명확하게 정의하여 빌드 프로세스를 안정적이고 일관되게 유지하는 데 중요한 역할을 한다. Yocto 프로젝트를 사용할 때 이러한 변수를 적절히 설정하면, 더 예측 가능하고 관리 가능한 빌드 시스템을 구축할 수 있다.