make assignment 관련 variable expand에 대해서 질문 드려요.

ovonel의 이미지

안녕하세요. make 관련해서 궁금한 것이 있습니다.

아래 간단한 makefile을 보면 결과가 gcc ASSIGNMENT만 출력이 되는게 맞는 것 같은데
TEST = ${CC} 가 TEST := ${CC} 처럼 동작하는 이유가 궁금합니다.

감사합니다.

$ cat makefile
CC := cc
TEST = ${CC}
all :
@echo "${TEST} ASSIGNMENT"

ifeq (${TEST},cc)
TEST = ${CC}
$(info ${TEST} ---info)
endif
CC := gcc

$ make
cc ---info
gcc ASSIGNMENT

익명 사용자의 이미지

ifeq 나 info 수행될 시점에 CC값은 cc이고요,

all 이 수행될때 CC 가 gcc로 evaluation되는 상황인듯요.

ovonel의 이미지

그렇군요..^^ 감사합니다. 테스트 좀 더 해봐야겠네요~