在Makefile规则中,通配符会被自动展开。但在变量的定义和函数引用时,通配符将失效。这种情况下如果需要通配符有效,就需要使用函数“wildcard”
使用wildcard可以很好的获取指定路径下的所有.cpp文件。比如src=$(wildcard *.cc) 可以获取当前路径下所有的.cc文件 获取到这些cc文件以后,将其编译成对应的.o文件。obj=$(patsubst *.cc,*.o,${src}) ,获取到这些.o文件以后就可以直接进行链接出可执行文件。foo:${obj}意思是foo的编译依赖obj文件。 clang++ -o hi ${obj} 输出可执行文件名字hi ,下面是完整的微型Makefile
src=$(wildcard *.cc)
obj=$(patsubst *.cc,*.o,${src})
foo:${obj}
clang++ -o hi ${obj}