我的目标文件的路径可能如下所示:
'../../src/foo/bar.c'
我希望它们输出到
'build/src/foo/bar.o'
目前使用:
COBJS := $(notdir $(CFILES))
COBJS := $(patsubst %,$(BUILD)%.o,$(COBJS))
我可以实现
'build/bar.o'
如果任何两个库/项目包含相同的类名,就会出现问题。
所以问题是,如何从 Make 中的路径中删除多个“../”。我尝试过明显而幼稚的方法,但没有结果。
更新,以下内容将完全匹配 ../../ 并将其替换为其余内容。这是完美的,除了它特定于 ../../。只需要让它匹配任意数量的../../
COBJS := $(CFILES:../../%=%)
Update,
已解决,距离发布我自己的答案仅差三个声誉。
COBJS := $(subst ../,,$(CFILES))
正如我最初的问题中所发布的,我最终忘记了回答。
此问题以及可能的许多其他 Make 字符串替换的解决方案如下:
COBJS := $(subst ../,,$(CFILES))
'subst' 有 3 个参数。 $toMatch、$replaceWith、$string。
在本例中,$(CFILES) 是要编译的所有 .c 文件的列表。我将“../”替换为空。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)