makefile 总结
Contents
常用变量
CFLAGS C编译器的选项,没有定义,可以指定编译头文件路径 LDFLAGS 链接器的选项,没有定义,可以指定链接库文件 LDLIBS 链接器的选项,没有定义,可以指定链接库文件路径
$@ 目标文件
$^ 所有的依赖文件
$< 第一个依赖文件
$? 规则中所有比目标新的条件组成一个列表(以空格分隔)
简单编译的自动推导
简单情况下, makefile可以根据隐式规则进行自动推导,编译
环节可以省略,只需要把链接部分写清楚
Fortran含module时,makefile的书写
含有module时就不能省略编译环节,否则链接容易出错,下面给出一个简单的makefile例子
# INST_DIR = /home/mars/.Setup
# CFLAGS = -I/usr/include/malloc -fopenmp
# LDFLAGS = -lfftw3
CC = gfortran
BIN = main
OBJS = *.o
COBJS = fft.f mlsqr_mod.f90 forHRLRT.f90 main.f90
$(BIN) : $(OBJS)
$(CC) $(OBJS) -o $(BIN) $(LDFLAGS)
$(OBJS) : $(COBJS)
$(CC) -c $^ $(CFLAGS)
run :: $(BIN)
./$(BIN)
install :: $(BIN)
install -s $(BIN) $(INST_DIR)
clean ::
rm -f $(BIN) core $(OBJS) *.mod
Author F. Cheng
LastMod 2015-10-21