makefile里正则表达式的问题

swiwi   2010-4-29 19:58 楼主
让我更新SDK版本, 以前没看过编译的东西, 只好边学边搞, 现在遇到个难题:
新SDK里多了一个这样的正则表达式
DEPS_SED = $(CP) $(BLDDIR)/$*.d $(BLDDIR)/$*.tmp;\
        $(ECHO) >> $(BLDDIR)/$*.tmp;\
        $(SED) -e 's/\#.*//' -e 's/^[^:]*: *//' \
        -e 's/ *\\$$//' -e '/^$$/ d' -e 's/$$/ :/' \
        -e '/^ .$$/d' \
        < $(BLDDIR)/$*.d >> $(BLDDIR)/$*.tmp; \
        $(SED) -e 's|^\([^\/ ].*\.o\):|'$(BLDDIR)/'\1:|g'  \
        -e 's|.*?/\(.*\.o\):|'$(BLDDIR)/'\1:|g'  \
        -e 's| \([0-9a-zA-Z]\)| '$(SDK)/$(LOCALDIR)'\/\1|g' \
        -e 's|^\([0-9a-zA-Z]\)|'$(SDK)/$(LOCALDIR)'/\1|g' \
        -e 's| \(\.\.\/\)| '$(SDK)/$(LOCALDIR)'\/\1|g' \
        -e 's|'$(SDK)'|'$$\{SDK\}'|g' \
        < $(BLDDIR)/$*.tmp > $(BLDDIR)/$*.P;         

我只能看出来操作上是先把 .o文件的依赖文件 .d复制成 .tmp,  然后做了两次替换, 最后生成 .p文件, 但是现在的结果是 .d里面有正确的头文件依赖关系, .tmp和 .d一样 .p是空文件.  正则表达式我刚开始学. 这个实在看不明白了. 求教一下有人能看懂这个到底要替换什么东西么?

回复评论 (1)

有点明白了, $(SED)里应该是调用sed文本编辑器, 我没有在make.tool里指定编辑器. 导致生成的文件是空的.
点赞  2010-4-29 21:05
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复