make - 获取没有文件名的文件路径

make - Get path to file without filename

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

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

如何只获取 CFILES.

的文件路径(不带文件名)

例如:

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

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

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

例如

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

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

所以你可以这样写:

DIRS := $(dir $(CFILES))

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

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

如果您在同一目录中有多个源文件,这也会为您提供副本。如果你只想要每个目录的一个实例,你可以使用:

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