【问题标题】:Separate file name from its path将文件名与其路径分开
【发布时间】:2012-01-28 20:37:42
【问题描述】:

我有许多来自这个表达式的文件:

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

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

【问题讨论】:

    标签: c++ makefile gnu-make


    【解决方案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 函数。

    【讨论】:

    • @itun 它只是一个迭代变量的名称(参见foreach docs),您可以随意给它取另一个名称。
    猜你喜欢
    • 2014-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-20
    • 2013-06-08
    • 1970-01-01
    • 2020-11-09
    相关资源
    最近更新 更多