재귀 확장

제품/보드 구성 메이크파일에서 재귀 확장 을 사용하지 마십시오. 재귀 확장은 makefile에서 변수 할당을 위해 := 대신 raw = 를 사용하는 것입니다. 다른 변수의 값으로 설정된 변수는 자체가 평가될 때까지 다른 변수를 평가하지 않습니다. Starlark에서 지원하지 않는 기능입니다.

제거는 주로 사용 방법의 특정 시나리오에 따라 다릅니다. 대부분의 경우 변수 할당이 사용되기 이전으로 이동해야 합니다. 예를 들어 다음을 바꿉니다.

MY_VAR_2 = foo
# Some stuff in between...
MY_VAR = $(MY_VAR_2)
MY_VAR_2 = bar
# $(MY_VAR) is bar here.

와 함께:

MY_VAR_2 := foo
# Some stuff in between...
MY_VAR_2 := bar
MY_VAR := $(MY_VAR_2)
# $(MY_VAR) is bar here.

+= 가 있는 변수에 추가하는 것은 해당 변수가 이전에 단순 확장으로 할당되지 않은 경우 재귀 확장을 사용합니다. 변수가 이전에 할당되었는지 확실하지 않은 경우 +=MY_VAR := $(strip $(MY_VAR) new_value) 로 바꿀 수 있습니다.

지연된 확장을 제거하면 Starlark로의 변환이 완료되기 전에도 Makefile 평가 속도를 높일 수 있습니다. 변수가 값비싼 함수 호출의 결과로 설정된 경우 함수는 단순 확장으로 한 번만 호출되지만 재귀 확장에서는 잠재적으로 여러 번 호출됩니다.