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 :
=
재귀 적으로 확장 된 변수를 정의합니다. :=
단순히 확장 된 변수를 정의합니다.