文章目录
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的优势;