gpt4 book ai didi

Makefile - 从路径中删除 ../

转载 作者:行者123 更新时间:2023-12-04 04:31:43 25 4
gpt4 key购买 nike

我的目标文件带有可能如下所示的路径:

 '../../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 文件的列表。我什么都不用替换'../'。

关于Makefile - 从路径中删除 ../,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9732068/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com