Makefile
每次到写Makefile的时候,都是Google一段代码,基本就能实现自己的需求,过后就忘(发现越来越容易忘记一些事情)。今天终于被要求解释Makefile中的特殊变量,直接就蒙逼了,被狠狠地鄙视了一回,那么还是做个备忘吧。之后涉及到Makefile的问题,我都指着这篇活了。
Makefile 是指明程序编译链接依赖关系的文件,配合make使用。
Makefile 的语法只有一条:
targets : prerequisites
command
即:
目标:依赖
命令
其中,命令之前只能用[TAB]缩进。如果一个目标没有依赖,但是需要执行其后的命令,则使用伪目标.PHONY
修饰。.PHONY
最常见的情况是用来修饰clean。
给出一个通用的Makefile模板:
TESTS = xx_test
all : $(TESTS)
OBJECTS = $(patsubst %.cpp, %.o, $(wildcard *.cpp))
# patsubst: 匹配替换,将.cpp结尾的文件替换为.o.
# wildcard: 展开成一列所有符合由其参数描述的文件名,文件间以空格间隔。
# $@: 表示目标集,即当前的target
# $<: 表示第一个依赖目标集
# $^: 表示所有依赖项
%.o: %cpp
$(CXX) -c $< -o $@
TESTS: $(OBJECTS)
$(CXX) $^ -o $@
clean:
rm -rf $(OBJECTS) *.o
.PHONY : clean
如果你喜欢这篇文章,欢迎赞赏作者以示鼓励