Makefile 에서 ifeq 사용관련 질문입니다.

hahaite의 이미지

안녕하세요~

아래와 같이 ifeq 를 사용하였는데 원하는 결과를 얻을 수 없어 질문드립니다.

제가 하려는 것은 paint.o 파일을 만나면 윗부분 컴파일을 하도록 하는 것인데요.
계속 아래부분으로 들어갑니다.
echo 를 찍어봐도 paint.o 파일로 제대로 나오는데 말입니다.

혹시 제가 사용을 잘못하고 있는 것일까요?
조언해주시면 고맙겠습니다.

######################################################
######################################################
%.o : %.cpp
ifeq ($@,paint.o)
@echo 1111111111111111111111111111
@echo $@
$(CXX) -o $@ -c $^ $(CFLAGS) $(LDFLAGS)
else
@echo 22222222222222222222222222222
@echo $@
$(CXX) -o $@ -c $^ $(CFLAGS)
endif

######################################################
######################################################

그럼, 즐거운 하루 되세요.

draca의 이미지

%.o : %.cpp
    @echo 22222222222222222222222222222
    @echo $@
    $(CXX) -o $@ -c $^ $(CFLAGS)
 
paint.o : paint.cpp
    @echo 1111111111111111111111111111
    @echo $@
    $(CXX) -o $@ -c $^ $(CFLAGS) $(LDFLAGS)
cwryu의 이미지

ifeq에서 $@, $<, $^ 따위는 못 씁니다. 자동 변수 말고 파일에서 변하지 않는 변수만 됩니다.