这篇博客将从最简单的makefile讲起,通过不断升级,最后成为项目中常用的makefile文件。
入门
效果预览
1.一个最简单的输出"Hello world"的hello.c文件,内容如下:
#include <stdio.h>
int main()
{
printf("Hello world\n");
return 0;
}
2.一个makefile文件,内容如下:
start:
gcc -o hello hello.c
这是最简单的makefile文件,写好之后直接在目录下make,生成hello的可执行文件.
语法浅析
一、@
由此观之,最基本的格式就是
target:[dependency]
command
target 就是标号的意思,target可以随便叫,一般情况下要有实际意义,后面会解释他的其他用途。
[dependency] 是可选项,表示依赖关系,这里可以先不考虑。
command Linux下的命令,比如可以写
start:
echo "Welcome"
那么执行make之后就会在终端打印Welcome,效果如图:
你可能会疑惑,为什么会把命令echo "Welcome"显示出来,默认下我们的命令都会显示出来,要隐藏也很简单,只要在命令前加个@就可以了,试一试?
start:
@echo "Welcome"
二、标号
删掉刚刚生成的hello可执行文件,再将makefile修改成如下,make有什么效果?
start:
@echo "Welcome"
second:
@gcc -o hello hello.c
没错他只打印了一个"Welcome"并没有生成响应的可执行文件,也就是标号second里面的command并没有执行,原因是这样的在makefile中默认只执行第一个标号,想执行其中某个标号的话需要这样操作:
make 标号 .所以试一下make second,这样只执行seond,不打印Welcome但是生成了hello文件.
有什么意义?
start:hello.o
@gcc -o hello hello.c
hello.o:
@gcc -o hello