Windows上vs开发惯了,突然迁移到linux下开发,Makefile得自己写,所以做下笔记。

基本规则

target: prerequisites ...

command

...
...

target可以为对象文件,二进制文件,也可以为一个标签。

prerequisites为依赖,二进制文件依赖对象文件列表、静态库,对象文件的话,除了依赖(源码),还有要执行的编译对应源码的命令。

替换扩展名

LIBOBJECTS = $(LIB_SOURCES:.cc=.o)

LIB_SOURCES的文件列表替换扩展名:

1.cc 2.cc 3.cc -> 1.o 2.o 3.o

wildcard通配符

选取所有符合统配规则的文件,然后用空格隔开:

$(wildcard ./*.cc) -> ./1.cc ./2.cc

静态模式

可以使用统配来让所有符合的一些后缀名的自动生成规则:

%.o: %.cc
	gcc $(CXXFLAGS) -c $< -o $@

其中$<表示的是第一个依赖,而$@表示的是目标,也就是所有的xxx.o都会自动执行为:

xxx.o: xxx.cc
	gcc $(CXXFLAGS) -c xxx.cc -o xxx.o
共 0 条回复
暂时没有人回复哦,赶紧抢沙发
发表新回复

作者

sryan
today is a good day