Makefile make-获取不带文件名的文件路径

Makefile make-获取不带文件名的文件路径,makefile,compilation,gnu-make,Makefile,Compilation,Gnu Make,我的Makefile中有一个获取所有src文件的规则: CFILES := $(shell find ./ -type f -name '*.c') 如何仅获取CFILES的文件路径(不带文件名) 例如: /drivers/fb/fb.c变为/drivers/fb /stivalle/stivalle.c变成/stivalledirname是你的朋友。(别忘了man dirname) 乙二醇 请参阅上的GNU make部分 所以你可以写: DIRS := $(dir $(CFILES)) 这

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

CFILES := $(shell find ./ -type f -name '*.c')
如何仅获取
CFILES
的文件路径(不带文件名)

例如:

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


/stivalle/stivalle.c
变成
/stivalle
dirname
是你的朋友。(别忘了
man dirname

乙二醇


请参阅上的GNU make部分

所以你可以写:

DIRS := $(dir $(CFILES))
这将为您提供带有尾随斜杠的路径。如果要删除尾部斜杠,可以使用:

DIRS := $(patsubst %/,%,$(dir $(CFILES)))
DIRS := $(sort $(patsubst %/,%,$(dir $(CFILES))))
如果您在同一目录中有多个源文件,这也将为您提供副本。如果每个目录只需要一个实例,则可以使用:

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

我如何在
c文件上使用它?