当前位置: 技术问答>linux和unix
求助 makefile 中一行命令
来源: 互联网 发布时间:2016-04-22
本文导语: makefile中的一行命令: @/bin/sh -ec 'g++ -M $(CXXFLAGS) $(IDIR) $ .tmpfile; cp -f .tmpfile $@;' 有如下问题: 1) “-ec” ? 2) “|” ? 3) "s!$*.o!$(PWD)/$*.o!1" 为什么用双引号? 4)...
makefile中的一行命令:
@/bin/sh -ec 'g++ -M $(CXXFLAGS) $(IDIR) $ .tmpfile;
cp -f .tmpfile $@;'
有如下问题:
1) “-ec” ?
2) “|” ?
3) "s!$*.o!$(PWD)/$*.o!1" 为什么用双引号?
4) ".temfile" ?
5) ";"
6) "cp" 和“-f”
期待朋友们指点,非常感谢
@/bin/sh -ec 'g++ -M $(CXXFLAGS) $(IDIR) $ .tmpfile;
cp -f .tmpfile $@;'
有如下问题:
1) “-ec” ?
2) “|” ?
3) "s!$*.o!$(PWD)/$*.o!1" 为什么用双引号?
4) ".temfile" ?
5) ";"
6) "cp" 和“-f”
期待朋友们指点,非常感谢
|
@/bin/sh就是执行/bin/sh命令,@是不回显
sh命令里-ec就是sh执行的文件从后的的字串中取
'g++ -M $(CXXFLAGS) $(IDIR) $ .tmpfile;
cp -f .tmpfile $@; '
|是管道符把g++编译的输出作为sed -e "s!$*.o!$(PWD)/$*.o!1"的输入
最后输出到.tmpfile文件里
再后一句拷贝临时文件到目标文件
sh命令里-ec就是sh执行的文件从后的的字串中取
'g++ -M $(CXXFLAGS) $(IDIR) $ .tmpfile;
cp -f .tmpfile $@; '
|是管道符把g++编译的输出作为sed -e "s!$*.o!$(PWD)/$*.o!1"的输入
最后输出到.tmpfile文件里
再后一句拷贝临时文件到目标文件
|
1.-e Exit immediately if a Command exit without a non-zero status(如果有命令返回非零状态则直接退出)
-C If set,disallow existing regular file to be ovrewritten by redirection of output(如果设置了的话不允许直接覆盖已存在的普通文件)
注意是-C 不是-c,-c不知道。
2.管道的意思,将结果重定向为后面一个程序的输入
3.这个不知道,你可以在查查sed的用法或者请教高人。
4..tempfile是一个文件,是上面那个接收管道重定向信息的文件
5.;是两个命令的分隔符,告诉SH,这个是两个命令
6.cp是copy的意思,-f是 --force的意思如果无法打开已经存在的文件,则会删除该文件后再重新尝试打开
-C If set,disallow existing regular file to be ovrewritten by redirection of output(如果设置了的话不允许直接覆盖已存在的普通文件)
注意是-C 不是-c,-c不知道。
2.管道的意思,将结果重定向为后面一个程序的输入
3.这个不知道,你可以在查查sed的用法或者请教高人。
4..tempfile是一个文件,是上面那个接收管道重定向信息的文件
5.;是两个命令的分隔符,告诉SH,这个是两个命令
6.cp是copy的意思,-f是 --force的意思如果无法打开已经存在的文件,则会删除该文件后再重新尝试打开
|
汗!看来我说错了。LS的应该是正解!
|
unix 中 任何一个命令的输出 都可以作为 另外一个命令的输入。