代码之家  ›  专栏  ›  技术社区  ›  code_fodder

gnu makefile通过要忽略的文件夹列表筛选源文件列表

  •  1
  • code_fodder  · 技术社区  · 7 年前

    假设我有以下变量:

    SOURCES = folder1/a.c folder1/b.c folder2/c.c folder3/d.c folder3/e.c
    FILTERS = folder2 folder3
    

    现在我想设置一个只包含 folder1/a.c folder1/b.c . 我试过了 $(filter-out folder2%,$(SOURCES)) 这确实删除了未标记的folder2项。也许我可以用这种方法循环过滤?

    还是有更好的办法?

    1 回复  |  直到 7 年前
        1
  •  3
  •   MadScientist    7 年前

    你可以使用:

    OUTPUT := $(filter-out $(addsuffix /%,$(FILTERS)),$(SOURCES))
    

    filter-out 可以接受多个筛选器并全部应用它们。我建议你用 /% 而不是仅仅 % 这样就不会捕获恰好以目录名开头的文件名。