【问题标题】:make - Get path to file without filenamemake - 获取没有文件名的文件路径
【发布时间】:2021-05-13 13:10:50
【问题描述】:

我的 Makefile 中有一条获取所有 src 文件的规则:

CFILES := $(shell find ./ -type f -name '*.c')

我怎样才能只获得CFILES 的文件路径(没有文件名)。

例如:

./drivers/fb/fb.c 变为 ./drivers/fb

./stivalle/stivalle.c 变为 ./stivalle

【问题讨论】:

    标签: makefile compilation gnu-make


    【解决方案1】:

    请参阅File Name Functions 上的 GNU make 部分。

    所以你可以写:

    DIRS := $(dir $(CFILES))
    

    这会为您提供带有斜杠的路径。如果要删除尾部斜杠,可以使用:

    DIRS := $(patsubst %/,%,$(dir $(CFILES)))
    

    如果您在同一目录中有多个源文件,这也会给您重复。如果您只想要每个目录的一个实例,您可以使用:

    DIRS := $(sort $(patsubst %/,%,$(dir $(CFILES))))
    

    【讨论】:

      【解决方案2】:

      dirname 是你的朋友。 (别忘了man dirname

      例如

      $ dirname /opt/foo/bar.json
      /opt/foo
      

      【讨论】:

      • 如何在CFILES 上使用它?
      猜你喜欢
      • 1970-01-01
      • 2011-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多