如何替换匹配中其他列表的列表中的字符串

时间:2017-12-05 19:52:07

标签: makefile gnu-make

假设我有两个源目录:

  • srcdir0 - 包含第0代编译的源文件
  • srcdir1 - 包含srcdir0文件的子集

我为srcdir0srcdir1

创建了文件列表
S0SRCS := $(wildcard $(srcdir0)/*.c)
S1SRCS := $(wildcard $(srcdir1)/*.c)

我尝试创建一个具有基本srcdir0文件但被srcdir1同名文件替换的最终列表。换句话说,srcdir1文件优先。

我认为filterfilter-out函数可能是我的朋友,但我没有足够的经验来更好地了解。

1 个答案:

答案 0 :(得分:3)

我认为从S1的名称中过滤出S0目录中的名称就足够了:

S0NAMES := $(notdir $(S0SRCS))
S1NAMES := $(notdir $(S1SRCS))
FINAL-LIST := $(addprefix $(srcdir0)/,$(filter-out $(S1NAMES),$(S0NAMES))) $(S1SRCS)

请先测试一下,我没有机会这样做,并把它写在我的头顶。