当前位置: 技术问答>linux和unix
一个关于makefile的问题!!!
来源: 互联网 发布时间:2015-04-08
本文导语: 我在Unix下写了两个源程序err_fun.c 和 testls.c, 头文件为ourhdr.h(两个.c程序都用此头文件),编写的makefile文件如下: objects = testls.o err_func.o testls: $(objects) cc -o testls $(objects) testls.o: ourhdr.h err_func.o: ourhdr.h .PHO...
我在Unix下写了两个源程序err_fun.c 和 testls.c, 头文件为ourhdr.h(两个.c程序都用此头文件),编写的makefile文件如下:
objects = testls.o err_func.o
testls: $(objects)
cc -o testls $(objects)
testls.o: ourhdr.h
err_func.o: ourhdr.h
.PHONY: clean
clean:
rm *.o
执行结果如下:
$make
cc -O -c testls.c
cc -O -c err_func.c
cc -o testls testls.o err_func.o
可是我发现并没有执行 rm *.o操作,当我再次执行make时,执行结果如下:
$make
'testls' is up to date.
请问各位大虾这是怎么回事呀?为什么clean中的操作不执行呀?
objects = testls.o err_func.o
testls: $(objects)
cc -o testls $(objects)
testls.o: ourhdr.h
err_func.o: ourhdr.h
.PHONY: clean
clean:
rm *.o
执行结果如下:
$make
cc -O -c testls.c
cc -O -c err_func.c
cc -o testls testls.o err_func.o
可是我发现并没有执行 rm *.o操作,当我再次执行make时,执行结果如下:
$make
'testls' is up to date.
请问各位大虾这是怎么回事呀?为什么clean中的操作不执行呀?
|
在不带参数时,makefile 中第一个 : 前的内容被执行,即
testls: $(objects) 后的内容被执行。
如果你要执行 rm *.o, 可键入命令:make clean
还有一个办法,就是在 tesetls: $(objects) 之前加入
all: testls clean
这样在 make 的时候就两个都会执行了。
testls: $(objects) 后的内容被执行。
如果你要执行 rm *.o, 可键入命令:make clean
还有一个办法,就是在 tesetls: $(objects) 之前加入
all: testls clean
这样在 make 的时候就两个都会执行了。