Makefile通配符和变量扩展
我有这个Makefile(缩写): 如果我将证监会定义的行替换为其下方的行。它工作正常,输出如下所示Makefile通配符和变量扩展,makefile,Makefile,我有这个Makefile(缩写): 如果我将证监会定义的行替换为其下方的行。它工作正常,输出如下所示 c:> make mktest ./src1 ./src2/file2.c ./src1 ./src2/file2.o building mktest c:> make mktest ./src1/*.c ./src2/*.c ./src1/*.o ./src2/*.o building mktest 这是确定的,如果我只有几个子目录,我想包括。但是如果我想包含更多,Makefi
c:> make mktest
./src1 ./src2/file2.c
./src1 ./src2/file2.o
building mktest
c:> make mktest
./src1/*.c ./src2/*.c
./src1/*.o ./src2/*.o
building mktest
这是确定的,如果我只有几个子目录,我想包括。但是如果我想包含更多,Makefile将变得丑陋。我在这里没有正确使用通配符函数吗?您需要的定义是:
CSRC:= $(foreach dir,$(SRCDIR),$(wildcard $(dir)/*))
如果您查看以下内容:
$(通配符模式…
此字符串在makefile中的任意位置使用,替换为与给定文件名模式之一匹配的现有文件名的空格分隔列表
这意味着您的原始行实际上是:
CSRC := $(wildcard src1/ src2/*.c)
即名称与src1/
或src2/*.c
匹配的文件
CSRC := $(wildcard src1/ src2/*.c)