为什么“Makefile”需要依赖?

com*_*hys 0 make

我想知道为什么 'Makefile' 需要依赖行,尽管命令行已经有文件列表。例如,

你好:main.o hello.o

        gcc -o main.o hello.o
Run Code Online (Sandbox Code Playgroud)

gcc 命令已经包含 main.o、hello.o。编写依赖行看起来效率低下。

Kus*_*nda 5

是的,但是构建规则是不必要的,而不是依赖项。make毕竟,它是使打勾的依赖项。构建规则也严重错误(将覆盖main.o而不是构建hello)。

使用隐式规则,这可以缩短为

hello: main.o hello.o
Run Code Online (Sandbox Code Playgroud)

或者,如果除了依赖项之外,您还想要一个显式的 make 规则:

hello: main.o hello.o
    $(CC) -o $@ $<
Run Code Online (Sandbox Code Playgroud)