Makefile에서 대문자 사용 규칙이 있나요?

kkb의 이미지

Makefile에서 대문자 사용 규칙이 있나요?

CC  = gcc
OBJECTS = main.o
 
all: SOURCE test
 
SOURCE:
    cd source && make
 
test: $(OBJECTS)
    $(CC) -o $@ $^
 
clean:
    cd source && make clean
    -rm -fr *.o test

위에서는 make가 잘 실행되어 실행파일이 생성되는데

여기서 단순히 SOURCE 타겟만 소문자로 바꾸면,
make가 정상적으로 실행되지 않습니다

Makefile에서 대문자 사용 규칙이 있나요?

CC  = gcc
OBJECTS = main.o
 
all: source test
 
source:
    cd source && make
 
test: $(OBJECTS)
    $(CC) -o $@ $^
 
clean:
    cd source && make clean
    -rm -fr *.o test

make 실행 결과는 아래와 같습니다

# make
make: *** No rule to make target `main.o', needed by `test'.  Stop.
#

답변 주시면 감사하겠습니다

bacon의 이미지

대소문자문제가 아니라 디렉토리이름(혹은 파일이름) source하고 타겟이름 source가 같아서 생기는 문제인듯 한데요. 디렉토리(파일)이름이 먼저 검사될거에요. 그래서 cd source && make가 실행이 안될겁니다.

kkb의 이미지

아 정말이네요

디렉토리보다 타겟이 먼저 검사되는지 알았는데
디렉토리가 먼저 검사되네요

답변 감사합니다