上次问题(见http://www.cnblogs.com/yvivid/p/3546649.html),.depend信息路径错误的问题。

主要尝试了,在(虚拟机下构建)linux下编译,确实没有问题了。(工具链需要改为linux程序)

但回头看来,好像忽视了什么。

对于rules.mk更多的关注了gcc工具,即gcc -M的作用,忽视了 代码中 sed的作用。

 _depend:    $(obj).depend

 $(obj).depend:    $(src)Makefile $(TOPDIR)/config.mk $(SRCS)
@rm -f $@
@for f in $(SRCS); do \
g=`basename $$f | sed -e 's/\(.*\)\.\w/\1.o/'`; \
$(CC) -M $(HOST_CFLAGS) $(CPPFLAGS) -MQ $(obj)$$g $$f >> $@ ; \
done

重新分析了一下上面 sed的含义。

-e表示执行的匹配模板,

.*表示任意多个字符;\(.*\)是用来做后向引用的,后面的\1就是它了;
\.是一个点,\w用于匹配字母,数字或下划线字符;

实现的功能,将源文件*.c  和 *.cpp 文件变为 *.o, 即提前文件名并改为.o类型名称。

sed确实很便利,利用 sed可以较为简单的实现 d:变为 /cygdrive/d ,

在 rules.mk中, 增加 sed -i 's/d:/\/cygdrive\/d/g' $@

由于 /cygdrive/d 包含了 “/”,该符号是 替换操作的分隔符,所以需要用 \/表示“\”为转义符。

 _depend:    $(obj).depend

 $(obj).depend:    $(src)Makefile $(TOPDIR)/config.mk $(SRCS)
@rm -f $@
@for f in $(SRCS); do \
g=`basename $$f | sed -e 's/\(.*\)\.\w/\1.o/'`; \
$(CC) -M $(HOST_CFLAGS) $(CPPFLAGS) -MQ $(obj)$$g $$f >> $@ ; \
done
sed -i 's/d:/\/cygdrive\/d/g' $@

后续要适当学习sed,和正则表达式,提供工作效率。

遗留的小缺失,所以上面 仅针对 d:进行了替换,如果是其他盘符,还需要修改rules.mk。

后续看看正则表达式是否可以解决。

扩展阅读

shell中sed用法:http://www.cnblogs.com/giraffe/p/sed-in-shell.html

【系统工程师的自我修养】sed篇:http://www.cnblogs.com/gnuhpc/archive/2013/02/20/2919340.html

Unix sed实用教程系列目录[已完成]:http://www.cnblogs.com/lazycoding/p/3248289.html

痛苦的版本对齐(3) cygwin下的路径引用(sed解决篇)的更多相关文章

  1. 痛苦的版本对齐(3) cygwin下的路径引用

    [续<痛苦的版本对齐(2) 和时间的相关性>]http://www.cnblogs.com/yvivid/p/3541142.html 初步定位,如下告警为.depend文件路径问题导致. ...

  2. 【记录】cygwin下折腾个人配置环境

    (本文由hcbbt发布,转载请注明出处,blog.csdn[dot]net/hcbbT)      cygwin是windows下的linux的模拟环境,不仅可以执行linux的各种命令,可以在cyg ...

  3. cygwin下的vim 的vimrc配置

    1.一直接照 vim 在linux的配置使用 cygwin下的 vi. vim --version 之后,出现了帮助...

  4. iOS的UILabel设置居上对齐,居中对齐,居下对齐

    在iOS中默认的UILabel中的文字在竖直方向上只能居中对齐,博主参考国外网站,从UILabel继承了一个新类,实现了居上对齐,居中对齐,居下对齐.具体如下: // //  myUILabel.h ...

  5. cygwin下配置alias

    主要是cygwin下的盘符映射关系容易忘,直接用mount命令: 所以,找到E:\cygwin64\home\Administrator下面的.bashrc,添加alias.如下:

  6. cygwin下java报错“找不到或无法加载主类”的故障排除

    win7 下安装了java,命令行下可以正常运行,cygwin下报错:找不到或无法加载主类. 经排查发现是cygwin的~/.bash_profile中画蛇添足的配置了$CLASSPATH: JAVA ...

  7. cygwin 下安装python MySQLdb

    cygwin 下安装python MySQLdb 1) cygwin 更新 运行 cygwin/setup-x86_64.exe a 输入mysql,选择下面的包安装: libmysqlclient- ...

  8. Cygwin下编译的程序不使用Cygwin.dll即可运行的命令 及常用命令简介

    cc -mno-cygwin foo.c 1.$ ps PS的相关用法: QuoteUsage ps [-aefl] [-u uid]-f = show process uids, ppids-l = ...

  9. 在cygwin下创建的文件位于windows的哪个目录下?

    答: 1. C盘的SPB_Data目录下 2. 在cygwin下通过pwd命令可以查看,例如: jello@jello ~ $ pwd /cygdrive/c/SPB_Data (/cygdrive/ ...

随机推荐

  1. poj1850 Code【组合数学】By cellur925

    题意: * 按照字典序的顺序从小写字母 a 开始按顺序给出序列 (序列中都为升序字符串)* a - 1* b - 2* ...* z - 26* ab - 27* ...* az - 51* bc - ...

  2. ubuntu 给文件夹创建桌面快捷方式, 其实就是创建个软链接

    ln -s /home/zdj/Documents/windows_backup/2019Spring/ ~/Desktop/2019Spring ln -s /home/zdj/Documents/ ...

  3. scrapy将爬取到的数据存入elasticsearch

    pip安装 elasticsearch-dsl的包, 是elasticsearch提供给python 的接口 if __name__ == "__main__": 这个用来调试,还 ...

  4. layui开始时间小于结束时间

    直接上代码 // var endDate= laydate.render({ // elem: '#end_time',//选择器结束时间 // type: 'datetime', // min:&q ...

  5. bzoj 4859 [BeiJing2017]机动训练

    题面 https://www.lydsy.com/JudgeOnline/problem.php?id=4859 题解 和管道取珠类似 首先把平方转化成两条路径经过的图案相同的方案数 对于一条路径 方 ...

  6. 线段树(单点更新) POJ 2886 Who Gets the Most Candies?

    题目传送门 #include <cstdio> #include <cstring> #define lson l, m, rt << 1 #define rson ...

  7. [ HEOI 2016 ] 树

    \(\\\) Description 给出一颗树,开始只有 \(1\) 号节点有标记. \(\ C\ x\) 对 \(x\) 号节点打标记 \(\ Q\ x\) 查询 \(x\) 号节点深度最深的有标 ...

  8. iOS 播放本地,网络视频

    /** *  创建媒体播放控制器MPMoviePlayerControlle 可以控制尺寸 * *  @return 媒体播放控制器 */ -(MPMoviePlayerController *)mo ...

  9. knockout Observable Array(监控数组)

    Observable Array(监控数组)的作用 列表操作是经常会遇到的一个场景,使用监控数组,你可以: 保存列表对象,并且使用Ko提供的丰富的API操作列表元素(支持内建js Array的方法,以 ...

  10. web页面调用IOS的事件

    /** * js 调用ios的方法 * @param callback */ function connectWebViewJavascriptBridge(callback) { if (windo ...