나는 자동 변수 ([email protected],$^
) 및 패턴 (%
)를 사용하여 다음과 같은 makefile을 작성하지만, GNU 메이크 작동하지 않을 수 있습니다왜이 makefile을 사용할 수 없습니까?
TARGET = edit
SRCS = $(wildcard *.c)
OBJS = $(SRCS:%.c=%.o)
$(TARGET) : $(OBJS)
gcc $^ -o $(TARGET)
%.o : %.c
gcc $< -c [email protected]
나는 작업 디렉토리에 foo.c를, bar.c 있습니다. 오류 :
gcc foo.c -c foo.o
gcc: foo.o: No such file or directory
make: *** [foo.o] Error 1
나는 automatic variables
과 pattern rules
, 정확히 어떻게 그들을 사용하기에 매우 혼란스러워? 그리고 그들은 어떤 관계가 있습니까?
감사합니다. 나는 너무 부주의했습니다! 그러나'gcc -c $^-o $ @'를'gcc -c $ <-o $ @'로 대체 할 때 왜 차이점을 볼 수 없습니까? –
응답 내용을 잘 모르겠습니다. 여전히 오류가 표시됩니까? 새 오류 출력으로 질문을 업데이트 할 수 있습니까? 어떤 차이가 있습니까? – jszakmeister
나는 당신이 말한 것을 뒤죽박죽이라고 생각합니다. 나는 당신이 "gcc -c $ <-o $ @'를'gcc -c $^-o $ @'로 대체 할 때 차이점을 보지 않는 이유가 무엇이라고 생각하십니까?" 따라서 첫 번째 종속성을 살펴 보는 대신 모든 것을 살펴보십시오. 대답은'.o' 파일마다 오직 하나의 의존성이 있다는 것입니다 : 그것은'.c' 파일입니다. 이 경우'$ ^'와'$ <'사이에는 차이가 없습니다. – jszakmeister