[makefile] Makefile에서 : =와 =의 차이점은 무엇입니까?

Make의 변수 할당에 대해서는 : = 및 = 연산자를 참조하십시오. 그들 사이의 차이점은 무엇입니까?



답변

이것은 6.2 The Two Flavors of Variables
섹션의 GNU Make 문서에 설명되어 있습니다.

간단히 말해로 정의 된 변수 :=는 한 번 확장되지만로 정의 된 변수 =는 사용할 때마다 확장됩니다.


답변

간단한 할당 :=

단순 할당 표현식은 맨 처음에 한 번만 평가됩니다. 예를 들어, CC :=${GCC} ${FLAGS}첫 만남 중에로 평가되면 발생할 gcc -W때마다 ${CC}로 대체됩니다 gcc -W.

재귀 할당 =

재귀 할당 표현식은 코드에서 변수가 발견 될 때마다 평가됩니다. 예를 들어 like 문은 like CC = ${GCC} {FLAGS}작업 ${CC} file.c이 실행될 때만 평가됩니다 . 변수는 경우, GCC즉 재 할당되는
GCC=c++다음은 ${CC}변환됩니다 c++ -W재 할당 후.

조건부 할당 ?=

조건부 할당은 값이없는 경우에만 변수에 값을 할당합니다.

첨부 +=

그런 CC = gcc다음 추가 연산자가 CC += -w
다음 과 같이 사용 되었다고 가정하면 CC이제 값이 있습니다.gcc -W

자세한 내용은이 튜토리얼을 확인 하세요.


답변

에서 http://www.gnu.org/software/make/manual/make.html#Flavors :

=재귀 적으로 확장 된 변수를 정의합니다. :=단순히 확장 된 변수를 정의합니다.


답변