makefile主要用来对大型的项目进行编译和链接控制的配置文件,make工具根据该文件执行相应的编译和链接过程。
以下用简单示例来介绍如何写makefile
已有条件:两个源文件main.c 、test.c,main.c中用到test.c中的某个函数
输出可执行文件名:out
#out/main/test表示标签名,可以使用者随便设置,不一定要和文件名有关,
不过为了好识别性,一般都和文件名有关。
#out表示标签,该标签依赖于main/test标签,如果main或者test两个标签底下的命令
涉及的文件有更新,则要先处理相应标签的命令
out:main test
(注意这边要用tab键,不能用空格) gcc -o out main.o test.o
main: main.c
gcc -c main.c (该命令能生成main.o文件)
test: test.c
gcc -c test.c (该命令能生成test.o文件)
clean:
rm -rf main.o test.o
这样当执行make
命令时默认从首个标签开始,碰到依赖则递归对依赖项进行执行,如上例中执行make
后,会先执行out标签的,发现依赖项main和test没有执行,则先执行main标签的命令得到main.o,再执行test标签的命令test.o,最后再执行out标签的命令,得到out可执行文件。
也可以自己控制执行哪个标签的命令。比如我使用make clean
命令时,则直接执行clean标签的命令,删除main.o和test.o文件。