社区
工具平台和程序库
帖子详情
“ sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \” 做何解释?
bob007
2012-07-20 10:56:11
%.d: %.c
$(CC) -M $(CPPFLAGS) $< > $@.$$$$; \
sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \
rm -f $@.$$$$
哪位高手解释一下“ sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \”
...全文
1178
3
打赏
收藏
“ sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \” 做何解释?
%.d: %.c $(CC) -M $(CPPFLAGS) $ $@.$$$$; \ sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' $@; \ rm -f $@.$$$$ 哪位高手解释一下“ sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' $@; \”
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Linux-Torvalds
2012-07-20
打赏
举报
回复
后面的\都是为了和下面的命令连成一行,然后都用用;分隔,所以都是放在一个subshell当中执行。
Linux-Torvalds
2012-07-20
打赏
举报
回复
这是sed命令的用法了。Stream Editor
简单来讲就是替换。这里采用逗号作为基本语法的分隔。一般的形式是sed 's/pattern/new/g'
\($*\)\.o[ :]*替换为\1.o $@ :
后面的g表示全局替换,就是不止替换一次。
同时又是用在makefile当中,所以要牵扯到$*,$@之类的自动变量。
$*,表示的是target的除去了suffix后的filename,也就是%.d: %.c当中的%部分。
$@,表示的是target,也就是%.d
sed操作的文件是来自上面命令的生成的临时文件$@.$$$$
最后再把sed的输出定向到零时文件$@.$$$$
没有猜错的话,这应该是Manage project with GNU make 3rd Edition当中的例子。
xiaohuh421
2012-07-20
打赏
举报
回复
混乱编程 or 乱码
万能makefile写法详解,一步一步写一个实用的makefile,详解
sed
's,\($*\)\.o[ :]*,\1.o $@ : ,g' $@; \-附件资源
万能makefile写法详解,一步一步写一个实用的makefile,详解
sed
's,\($*\)\.o[ :]*,\1.o $@ : ,g' $@; \-附件资源
sed
's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \
makefileseq.d : seq.c @set -e; \ gcc -MM $ $@.$$$$; \
sed
's,\($*\)\.o[ :]*,\1.o $@ : ,g' $@; \ rm -f $@.$$$$ -include seq.d第一个命令@set -e。@关键字告诉make不输出该行命令;set -e的作用是,当后面的命令的返回值非0时,立即
跟我一起写Makefile 一个
sed
语句 %.d: %.c @set -e; rm -f $@; \ $(CC) -M $(CPPFLAGS) $< > $@.$$$$; \
sed
's,\($*
: 静态模式 %.d : %.c @set -e;rm -f $@; \ $(CC) -M $(CPPFLAGS) $$@.$$$$; \
sed
's,\($*\)\.o[ :]*,\1.o $@ : ,g' $@; \ rm -f $@.$$$$ 这段脚本实现了,[%.c]文件 编译过程中,产生[%.d]文件。 set -e 执行这段脚本文件有命令有异常则退出
makefile里的一条
sed
命令
看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 $@ :
makefile里经常看到
sed
指令
问题 这里,我们给出了一个模式规则来产生[.d]文件: %.d: %.c @set -e; rm -f $@; \ $(CC) -M $(CPPFLAGS) $; $@.$$$$; \
sed
's,\($*\)\.o[ :]*,\1.o $@ : ,g' ; $@; \
工具平台和程序库
24,857
社区成员
27,330
社区内容
发帖
与我相关
我的任务
工具平台和程序库
C/C++ 工具平台和程序库
复制链接
扫一扫
分享
社区描述
C/C++ 工具平台和程序库
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章