makefile里的一条sed命令

  • Post author:
  • Post category:其他


看gnu make的makefile,在自动依赖跟踪里用到了一条sed命令

sed ‘s,/($*/)/.o[ :]*,/1.o $@ : ,g’ <

$@.$$$$

> $@;

顺便学习一下sed编辑器

%.d: %.c

@set -e; rm -f $@; /

$(CC) -M $(CPPFLAGS) $< >


$@.$$$$


; /

sed ‘s,/($*/)/.o[ :]*,/1.o $@ : ,g’ <


$@.$$$$


> $@; /

rm -f


$@.$$$$

通过gcc等编译器找到.c文件的依赖的头文件,放到

$@.$$$$

里$@就是.d文件 $$$$是临时文件


$@.$$$$

的内容可能是   main.o : main.c defs.h

这句话的意思是:从

$@.$$$$

里读取每一行,处理完了放到$@里。怎么处理呢?就是把’main.o : ‘替换成 ‘main.o main.dep :’

于是main.o : main.c defs.h就变成了

main.o main.dep : main.c defs.h



版权声明:本文为fancyerII原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。