.PHONY与伪目标

1. .PHONY作用

  • 有时生成的文件与伪目标重名,为了防止这种情况,使用特殊标记".PHONY"来显示的指明一个目标是伪目标,这样不管有没有这个文件,该目标都是伪目标;
  • 伪目标:它是结合make使用完成特殊作用的目标;
make all 编译所有目标;
make -j8 使用8个核心编译目标
make install 安装已编译的程序;
make uninstall 卸载已编译的程序;
make clean 删除由make命令产生的文件,通常删除目标文件.o;
make check 测试刚编译的软件;
make dist 重新打包packname-version.tar.gz

上面是常见默认的伪目标:all、install、 clean等等;

2.实例

  • 自己也可以定义伪目标;
all: httpd simpleclient

httpd: httpd.c
	gcc -W -Wall -lpthread -o httpd httpd.c 
simpleclient: simpleclient.c
	gcc -o simpleclient simpleclient.c
.PHONY:del
del:
	rm httpd simpleclient

对于上面:del就是本文中的伪目标,当执行make时,会两个gcc命令,但是不会执行del;
只有执行make del时,才会删除生成的两个文件;

all: httpd simpleclient

httpd: httpd.c
	gcc -W -Wall -lpthread -o httpd httpd.c 
simpleclient: simpleclient.c
	gcc -o simpleclient simpleclient.c
clean:
	rm httpd simpleclient

  • 执行make clean和执行make del实现的功能一样;

3.makefile的好处

  • 比如对于上面;你要一直调试、一直修改源文件;那么每修改一次;
  • 你在终端执行如下命令,命令长不是问题,问题就怕记不住;然而对于有makefile文件,只需要make一下就ok了;多简单呀;
gcc -W -Wall -lpthread -o httpd httpd.c 
gcc -o simpleclient simpleclient.c
  • 对于删除文件只需要make clean就ok了,多好;
  • makes时,它只是对你修改的地方进行重编译,而不是对整个源码,这样更体现了make的优势;

猜你喜欢

转载自blog.csdn.net/qq_42698422/article/details/106868218
今日推荐