date: 2022-11-17 14:36:31

tags: makefile wildcard filter-out patsubst

文件列表

main.f90
makefile
sub1.f90
sub2.f90
sub3.f90

makfile代码

main = main.f90

SRC = $(wildcard *.f90)

SRC := $(filter-out $(main),$(SRC))

SRC := $(patsubst %.f90, %.o, $(SRC))

main:

    echo $(SRC)
  • wildcard 在对变量调用时,保持通配符特性
  • filter-out 过滤器,删除后面跟的第一个参数
  • patsubst 将变量中元素根据参数替换,上述代码将所有.f90替换为.o

执行结果

$> make
echo  sub1.o  sub2.o  sub3.o
 sub1.o  sub2.o  sub3.o