【发布时间】:2012-01-28 20:37:42
【问题描述】:
我有许多来自这个表达式的文件:
ui_files := $(wildcard $(SUBDIRS:%=%/*.ui)).
现在我需要相同文件路径的列表,但文件名中带有“ui_”前缀和另一个扩展名 (.h)。我该怎么做?
【问题讨论】:
我有许多来自这个表达式的文件:
ui_files := $(wildcard $(SUBDIRS:%=%/*.ui)).
现在我需要相同文件路径的列表,但文件名中带有“ui_”前缀和另一个扩展名 (.h)。我该怎么做?
【问题讨论】:
您可以使用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 函数。
【讨论】:
foreach docs),您可以随意给它取另一个名称。