当前位置: 技术问答>linux和unix
makefile中的伪目标问题
来源: 互联网 发布时间:2016-05-14
本文导语: 对于makefile中的伪目标,例如clean等,如果需要执行的话,需用make clean命令来执行。 但是为什么如果定义伪目标all,只需要输入make就可以执行了呢? 例如我们工程中的一段makefile all: lib_obj feb_lib fun_obj exe fun_obj: ...
对于makefile中的伪目标,例如clean等,如果需要执行的话,需用make clean命令来执行。
但是为什么如果定义伪目标all,只需要输入make就可以执行了呢?
例如我们工程中的一段makefile
all: lib_obj feb_lib fun_obj exe
fun_obj:
batch.o
chk.o
ctl.o
disk.o
drive.o
f2.o
lib_obj:
edit.o
brw.o
isam.o
curs.o
lib.o
feb_lib:
rm -f $(TFEB_LIB)
ar vq $(TFEB_LIB)
$(OBJECT_DIR)/febedit.o
$(OBJECT_DIR)/febbrw.o
$(OBJECT_DIR)/febisam.o
$(OBJECT_DIR)/febcurs.o
$(OBJECT_DIR)/feblib.o
exe:
cc -o $(EXECUTE_DIR)/qjexe $(OBJECT_ALL) $(LIBRARY_ALL)
我只需要输入make就可以执行了,并生成qjexe文件。
但是为什么如果定义伪目标all,只需要输入make就可以执行了呢?
例如我们工程中的一段makefile
all: lib_obj feb_lib fun_obj exe
fun_obj:
batch.o
chk.o
ctl.o
disk.o
drive.o
f2.o
lib_obj:
edit.o
brw.o
isam.o
curs.o
lib.o
feb_lib:
rm -f $(TFEB_LIB)
ar vq $(TFEB_LIB)
$(OBJECT_DIR)/febedit.o
$(OBJECT_DIR)/febbrw.o
$(OBJECT_DIR)/febisam.o
$(OBJECT_DIR)/febcurs.o
$(OBJECT_DIR)/feblib.o
exe:
cc -o $(EXECUTE_DIR)/qjexe $(OBJECT_ALL) $(LIBRARY_ALL)
我只需要输入make就可以执行了,并生成qjexe文件。
|
第一个目标就是make要执行的目标,后面的目标都要以make target的方式来使该目标相关的指令得到执行。
|
`all'
Compile the entire program. This should be the default target.
Compile the entire program. This should be the default target.