Makefile中对同一个目标的多次定义

在Makefile中对同一个目标进行多次定义

每个依赖都会被检查执行

最后的recipe会覆盖前面的recipe

即只有最后一个目标的recipe被执行

 

 

#
#

all: $(warning 1 prerequisite)p1
	$(warning 1 recipe)

all: $(warning 2 prerequisite)p2
	$(warning 2 recipe)

all:
	echo excute recipe

p1:
	echo p1 recipe

p2:
	echo p2 recipe

# Cancel implicit rules on Makefile
Makefile: ;

.PHONY: all p1 p2


 

 

$ make --debug=all
GNU Make 3.82
Built for x86_64-redhat-linux-gnu
Copyright (C) 2010  Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Reading makefiles...
Reading makefile `Makefile'...
Makefile:4: 1 prerequisite
Makefile:7: 2 prerequisite
Makefile:8: warning: overriding recipe for target `all'
Makefile:5: warning: ignoring old recipe for target `all'
Makefile:11: warning: overriding recipe for target `all'
Makefile:8: warning: ignoring old recipe for target `all'
Updating makefiles....
 Considering target file `Makefile'.
  Finished prerequisites of target file `Makefile'.
 No need to remake target `Makefile'.
Updating goal targets....
Considering target file `all'.
 File `all' does not exist.
  Considering target file `p2'.
   File `p2' does not exist.
   Finished prerequisites of target file `p2'.
  Must remake target `p2'.
Invoking recipe from Makefile:17 to update target `p2'.
echo p2 recipe
Putting child 0x220fa60 (p2) PID 32343 on the chain.
Live child 0x220fa60 (p2) PID 32343 
p2 recipe
Reaping winning child 0x220fa60 PID 32343 
Removing child 0x220fa60 PID 32343 from chain.
  Successfully remade target file `p2'.
  Considering target file `p1'.
   File `p1' does not exist.
   Finished prerequisites of target file `p1'.
  Must remake target `p1'.
Invoking recipe from Makefile:14 to update target `p1'.
echo p1 recipe
Putting child 0x220fc40 (p1) PID 32344 on the chain.
Live child 0x220fc40 (p1) PID 32344 
p1 recipe
Reaping winning child 0x220fc40 PID 32344 
Removing child 0x220fc40 PID 32344 from chain.
  Successfully remade target file `p1'.
 Finished prerequisites of target file `all'.
Must remake target `all'.
Invoking recipe from Makefile:11 to update target `all'.
echo excute recipe
Putting child 0x220fda0 (all) PID 32345 on the chain.
Live child 0x220fda0 (all) PID 32345 
excute recipe
Reaping winning child 0x220fda0 PID 32345 
Removing child 0x220fda0 PID 32345 from chain.
Successfully remade target file `all'.


 

你可能感兴趣的:(makefile)