차이점은 무엇입니까:= 및=Makefile?




gnu-make nmake (2)

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


단순 할당 (: =)

간단한 대입 표현식은 첫 번째 발생시 한 번만 평가됩니다. 예를 들어, 첫 번째 발생시 CC :=${GCC} ${FLAGS}gcc -W 로 평가되면 ${CC} 가 발생할 때마다 gcc -W 로 대체됩니다.

재귀 할당 (=)

재귀 할당 표현식은 코드에서 변수가 발견 될 때마다 평가됩니다. 예를 들어 CC = ${GCC} {FLAGS} 와 같은 ${CC} file.c${CC} file.c 와 같은 액션이 실행될 때만 평가됩니다. 그러나 변수 GCC 가 다시 할당되면 즉 GCC=c++ 이면 재 할당 후에 ${CC}c++ -W 로 변환됩니다.

조건부 할당 (? =)

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

추가 (+ =)

CC = gcc 라고 가정하면 추가 연산자는 CC += -w 와 같이 사용됩니다.
CC 이제 gcc -W 값을 갖습니다.


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

즉, := 로 정의 된 변수는 한 번 확장되지만 = 로 정의 된 변수는 사용될 때마다 확장됩니다.







colon-equals