「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 $@ $<

関連情報