[Make] 纯文本查看 复制代码
#!/bin/bash
# 设置文件路径
SRCDIR = src
OBJDIR = obj
MODDIR = mod
BINDIR = bin
# 文件
SRC = floatPrecision.f90 GE_MPC.f90
SRC := $(SRC) main.f90
OBJ = $(SRC:.f90=.o)
# 增加前缀
SRCS = $(addprefix $(SRCDIR)/, $(SRC))
OBJS = $(addprefix $(OBJDIR)/, $(OBJ))
# 编译器相关设置
FC = gfortran
FF = -cpp -O0 -g -fbacktrace
DF = -DDOUBLE_PRECISION
EXE = myPro
# 所有目标
all: $(OBJDIR)/depend $(OBJS) binary
# 依赖关系
include $(OBJDIR)/depend
# 链接
binary: $(OBJS)
$(FC) $(FF) $(DF) -J$(MODDIR) $(OBJS) -o $(BINDIR)/$(EXE)
# 编译
$(OBJS):
$(FC) $(FF) $(DF) -J$(MODDIR) -c $< -o $@
# 检查路径,并生成依赖关系
.PONHY: $(OBJDIR)/depend
$(OBJDIR)/depend:
@if test -d $(SRCDIR); then echo "# directory "$(SRCDIR) "exists"; else mkdir $(SRCDIR); fi
@if test -d $(OBJDIR); then echo "# directory "$(OBJDIR) "exists"; else mkdir $(OBJDIR); fi
@if test -d $(MODDIR); then echo "# directory "$(MODDIR) "exists"; else mkdir $(MODDIR); fi
@if test -d $(BINDIR); then echo "# directory "$(BINDIR) "exists"; else mkdir $(BINDIR); fi
makedepf90 -b $(OBJDIR) $(SRCS) > $(OBJDIR)/depend
# 清理工程
.PONHY: clean
clean :
rm -rf $(OBJDIR)/depend $(MODDIR)/*.mod $(OBJS) $(BINDIR)/$(EXE)