其本质是用来编译工程文件(内部可以理解为g++命令),用make命令,实现自动化编译。格式如下:
目标:依赖
(tab) 命令
介绍makefile的最初级版本
当前目录下有 main.cpp temp.cpp temp1.cpp
执行vim makefile 然后输入指令
main:main.cpp temp.cpp temp1.cpp
g++ -o main main.cpp temp.cpp temp1.cpp
终端输入make,执行写好的指令。
这种方法弊端太多,如果工程文件很多,那么makefile中的代码量太大,如果其中的某一个cpp文件被修改,那么其他的文件需要重新被编译,没必要。
接下来介绍makefile中的变量(执行的功能相当于宏替换):
自定义变量:
例:foo =abc bar=$(foo) 把bar替换成abc;
自带变量:CC CPPFLAGS
自动变量:$@ $< $^
模式规则 % .o:%.c
引入高级版本的makefile
target=main2//名字可替换
objects=main.o temp.o temp1.o
CC=g++
CPPFLAGS=-I./
$(target):$(objects)//g++ -o main2 main.o temp.o temp1.o
$(CC) -o $@ $^//$@规则中的目标
%.o :%.c
$(CC) -c $< $(CPPFLAGS)//$<第一个条件
.PHONY:clean//伪目标,不检查依赖和更新
clean://删除 可执行文件以及.o文件
rm -f $(objects) $(target)
执行make
当前目录下会生成 .o与可执行文件main2,执行makefile clean后清理完成,文件消失。
至此,makefile文件建立完毕。