【发布时间】:2020-06-18 14:53:56
【问题描述】:
在我的makefile 中有一个包含所有源文件的变量:
SOURCES := $(shell find $(SRCDIR) -type f -name *.$(SRCEXT))
我现在想创建一个DEPFILES,它包含与SOURCES 相同的文件,但有两个主要区别:
- 每个文件都以“.d”而不是“.c”结尾
- 每个文件都包含一个“.”在其基本名称之前,以便隐藏生成的文件。
我想出了这个表达方式,效果很好:
DEPFILES := $(foreach s,$(SOURCES:.$(SRCEXT)=.$(DEPSEXT)),$(shell echo $(s) | sed -e 's/^\(.*\/\)/\1./')))
最初,我将SOURCES 拆分为以下列表:
PRE := $(dir $(SOURCES))
SUF := $(addprefix ".", $(notdir $(SOURCES)))
问题:如何将这两个列表加入到一个 makefile 中,以使结果等于 DEPFILES?换句话说:你如何成对地连接两个列表中的字符串?
【问题讨论】:
-
你使用 GNUmake 吗?
$(join list1,list2)可以做到。