"Makefile"에 종속성이 필요한 이유는 무엇입니까?

"Makefile"에 종속성이 필요한 이유는 무엇입니까?

명령줄에 이미 파일 목록이 있음에도 불구하고 "Makefile"에 종속성 줄이 필요한 이유가 궁금합니다. 예를 들어,

안녕하세요: main.o 안녕하세요.o

        gcc -o main.o hello.o

gcc 명령에는 이미 main.o 및 hello.o가 포함되어 있습니다. 의존성 라인을 작성하는 것은 비효율적입니다.

답변1

예, 하지만 필요한 것은 종속성이 아니라 구축된 규칙입니다. make결국 의존성이 작동하는 것입니다. 빌드 규칙도 심각하게 잘못되었습니다( main.obuild 대신 덮어쓰게 됩니다 hello).

암시적 규칙을 사용하면 다음과 같이 단축할 수 있습니다.

hello: main.o hello.o

또는 종속성 외에 명시적인 make 규칙을 원하는 경우:

hello: main.o hello.o
    $(CC) -o $@ $<

관련 정보