본문 바로가기
language/shell

[makefile] :=, =, += 차이

by 파란하늘코더 2021. 4. 23.
반응형

최근에 다른 code들을 보며 skill up을 하고 있는데 우연찮게 

 

nvidia code를 보다보니 아래와 같은 구문이 있어 글을 남깁니다

 

makefile을 사용할 경우 변수 선언을 위해  = 를 사용하게 됩니다

 

이때 변수가 여러번 사용되면서 변경이 된다고 한다면 = 을 사용하면 다른 결과가 나오는데

 

code를 아래와 같이 작성을 하게 되면 결과가 어떻게 나올까요??

우리가 원한건 A, B가 차례대로 호출이 되어야 할 것 같지만, 실제 결과는 

이렇게 B가 두번 호출이 됩니다.

 

그 이유는 make file안에서는 = 는 최종적으로 실행하는 단계(run을 돌리는)에서 마지막으로 할당된 변수를 가져오게 됩니다.

 

따라서 위의 구문의 T=A는 실제론 필요없는 구문이 된 것입니다.

 

이를 막기위해선 :=를 사용하는데요, 이렇게 사용하면 실제 변수를 작성한 시점에서 변수가 할당되는 것처럼 됩니다.

추가적으로 +=는 변수에 추가적인 변수를 더하는 것으로

아래와 같이 출력이 됩니다

'language > shell' 카테고리의 다른 글

[쉘 스크립트] for문 활용하기  (0) 2021.01.28
[쉘 스크립트] 문자열 자르기  (0) 2021.01.26

댓글