ディレクトリにソースファイルeven_odd_list.c
がありますsrc
。これがmakefile
私が実験しているものです
VPATH = src include
CPPFLAGS = -I include
even_odd_list:
すべての暗黙のルールを調査するために電話make -pn
しましたが、適用できると思われるルールが見つかりません。
私は何が欠けていますか?make が実行している論理フローの説明をいただければ幸いです。
ディレクトリにソースファイルeven_odd_list.c
がありますsrc
。これがmakefile
私が実験しているものです
VPATH = src include
CPPFLAGS = -I include
even_odd_list:
すべての暗黙のルールを調査するために電話make -pn
しましたが、適用できると思われるルールが見つかりません。
私は何が欠けていますか?make が実行している論理フローの説明をいただければ幸いです。
ここで見落とされていたのは、make がターゲットを暗黙のルールに一致させる方法でした。この場合、前提条件は指定されていませんが、ルールの前提条件が存在するか存在する必要があり、作成できる場合、make は暗黙のルールに一致します。一致する暗黙のルールの前提条件が存在し、指定されていない場合、それは暗黙の前提条件と見なされます。
したがって、一致する最初のルールは次のとおりです。
%: %.c
# commands to execute (built-in):
$(LINK.c) $^ $(LOADLIBES) $(LDLIBS) -o $@
このページには詳細情報http://www.gnu.org/software/make/manual/html_node/Using-Implicit.htmlがあります。
Usingmake -d
は、make が実行しているステップを表示します。この例に関連する出力は次のとおりです。
Updating goal targets....
Considering target file `even_odd_list'.
File `even_odd_list' does not exist.
Looking for an implicit rule for `even_odd_list'.
Trying pattern rule with stem `even_odd_list'.
Trying implicit prerequisite `even_odd_list.o'.
Trying pattern rule with stem `even_odd_list'.
Trying implicit prerequisite `even_odd_list.c'.
Found prerequisite `even_odd_list.c' as VPATH `src/even_odd_list.c'
Found an implicit rule for `even_odd_list'.
Considering target file `even_odd_list.c'.
Looking for an implicit rule for `even_odd_list.c'.
Trying pattern rule with stem `even_odd_list'.
Trying implicit prerequisite `even_odd_list.y'.
Trying pattern rule with stem `even_odd_list'.
Trying implicit prerequisite `even_odd_list.l'.
Trying pattern rule with stem `even_odd_list'.
Trying implicit prerequisite `even_odd_list.w'.
Trying pattern rule with stem `even_odd_list'.
Trying implicit prerequisite `even_odd_list.w'.
Trying pattern rule with stem `even_odd_list.c'.
Trying implicit prerequisite `even_odd_list.c,v'.
Trying pattern rule with stem `even_odd_list.c'.
Trying implicit prerequisite `RCS/even_odd_list.c,v'.
Trying pattern rule with stem `even_odd_list.c'.
Trying implicit prerequisite `RCS/even_odd_list.c'.
Trying pattern rule with stem `even_odd_list.c'.
Trying implicit prerequisite `s.even_odd_list.c'.
Trying pattern rule with stem `even_odd_list.c'.
Trying implicit prerequisite `SCCS/s.even_odd_list.c'.
Trying pattern rule with stem `even_odd_list'.
Trying implicit prerequisite `even_odd_list.y'.
Looking for a rule with intermediate file `even_odd_list.y'.
Avoiding implicit rule recursion.
Trying pattern rule with stem `even_odd_list.y'.
Trying implicit prerequisite `even_odd_list.y,v'.
Trying pattern rule with stem `even_odd_list.y'.
Trying implicit prerequisite `RCS/even_odd_list.y,v'.
Trying pattern rule with stem `even_odd_list.y'.
Trying implicit prerequisite `RCS/even_odd_list.y'.
Trying pattern rule with stem `even_odd_list.y'.
Trying implicit prerequisite `s.even_odd_list.y'.
Trying pattern rule with stem `even_odd_list.y'.
Trying implicit prerequisite `SCCS/s.even_odd_list.y'.
Trying pattern rule with stem `even_odd_list'.
Trying implicit prerequisite `even_odd_list.l'.
Looking for a rule with intermediate file `even_odd_list.l'.
Avoiding implicit rule recursion.
Trying pattern rule with stem `even_odd_list.l'.
Trying implicit prerequisite `even_odd_list.l,v'.
Trying pattern rule with stem `even_odd_list.l'.
Trying implicit prerequisite `RCS/even_odd_list.l,v'.
Trying pattern rule with stem `even_odd_list.l'.
Trying implicit prerequisite `RCS/even_odd_list.l'.
Trying pattern rule with stem `even_odd_list.l'.
Trying implicit prerequisite `s.even_odd_list.l'.
Trying pattern rule with stem `even_odd_list.l'.
Trying implicit prerequisite `SCCS/s.even_odd_list.l'.
Trying pattern rule with stem `even_odd_list'.
Trying implicit prerequisite `even_odd_list.w'.
Looking for a rule with intermediate file `even_odd_list.w'.
Avoiding implicit rule recursion.
Trying pattern rule with stem `even_odd_list.w'.
Trying implicit prerequisite `even_odd_list.w,v'.
Trying pattern rule with stem `even_odd_list.w'.
Trying implicit prerequisite `RCS/even_odd_list.w,v'.
Trying pattern rule with stem `even_odd_list.w'.
Trying implicit prerequisite `RCS/even_odd_list.w'.
Trying pattern rule with stem `even_odd_list.w'.
Trying implicit prerequisite `s.even_odd_list.w'.
Trying pattern rule with stem `even_odd_list.w'.
Trying implicit prerequisite `SCCS/s.even_odd_list.w'.
Trying pattern rule with stem `even_odd_list'.
Rejecting impossible implicit prerequisite `even_odd_list.w'.
No implicit rule found for `even_odd_list.c'.
Finished prerequisites of target file `even_odd_list.c'.
No need to remake target `even_odd_list.c'; using VPATH name `src/even_odd_list.c'.
Finished prerequisites of target file `even_odd_list'.
Must remake target `even_odd_list'.
cc -I include src/even_odd_list.c -o even_odd_list
Putting child 0x085fbe90 (even_odd_list) PID 24853 on the chain.
Live child 0x085fbe90 (even_odd_list) PID 24853
Reaping winning child 0x085fbe90 PID 24853
Removing child 0x085fbe90 PID 24853 from chain.
Successfully remade target file `even_odd_list'.