将文件名与其路径分开

时间:2012-01-28 20:37:43

标签: c++ makefile gnu-make

我有这个表达式中的一些文件:

ui_files := $(wildcard $(SUBDIRS:%=%/*.ui)).

现在我需要相同文件路径的列表,但文件名中带有“ui_”前缀,另一个扩展名为(.h)。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

您可以使用foreach遍历列表并转换每个元素:

h_files := $(foreach ui,$(ui_files),$(dir $(ui))ui_$(notdir $(ui:.ui=.h)))

或者,首先转换整个列表,然后使用join

h_files := $(join $(dir $(ui_files)),$(patsubst %.ui,ui_%.h,$(notdir $(ui_files))))

两种解决方案都使用dir and notdir函数。