Makefile – 从路径中删除../

前端之家收集整理的这篇文章主要介绍了Makefile – 从路径中删除../前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一些目标文件,其路径可能如下所示:
'../../src/foo/bar.c'

我希望他们输出

'build/src/foo/bar.o'

目前使用:

COBJS      :=  $(notdir $(CFILES))
 COBJS      :=  $(patsubst %,$(BUILD)%.o,$(COBJS))

我能做到

'build/bar.o'

如果任何两个库/项目包含相同的类名,则会出现问题.

所以问题是,如何从Make中的路径中删除多个’../’.我尝试了明显而天真的方法而没有结果.

更新,以下将完全匹配../../并将其替换为其余部分.这是完美的,除了它特定于../../.只需要让它匹配任意数量的../../

COBJS      :=  $(CFILES:../../%=%)

更新,

解决了,只有三个声誉害羞发布我自己的答案.

COBJS      :=  $(subst ../,$(CFILES))

解决方法

正如我在原始问题中发布的那样,我忘了最终回答.

对此以及可能的许多其他Make字符串替换的解决方案如下:

COBJS      :=  $(subst ../,$(CFILES))

‘subst’需要3个参数. $toMatch,$replaceWith,$string.

在这种情况下,$(CFILES)是要编译的所有.c文件的列表.我什么都不用’../’.

原文链接:https://www.f2er.com/c/118558.html

猜你在找的C&C++相关文章