Nice programing

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

nicepro 2020. 10. 19. 12:43
반응형

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 :

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

참고 URL : https://stackoverflow.com/questions/4879592/whats-the-difference-between-and-in-makefile

반응형