为使 makefile 更易编写,make 将根据目标文件的后缀,使用自身的缺省规则。
缺省规则在文件 /usr/share/lib/make/make.rules 中。在识别缺省的后缀规则时,make 会将 FFLAGS 宏指定的任何标志、-c 标志以及要编译的源文件名都作为参数进行传递。此外,make.rules 文件还使用 FC 宏赋予的名称作为要使用的 Fortran 编译器的名称。
以下示例两次说明了这一规则:
FC = f95 OBJ = pattern.o computepts.o startupcore.o FFLAGS=–u pattern: $(OBJ) f95 $(OBJ) -lcore95 -lcore -lsunwindow \ -lpixrect -o pattern pattern.o: pattern.f commonblock f95 $(FFLAGS) -c pattern.f computepts.o: computepts.f commonblock startupcore.o: startupcore.f |
make 使用缺省规则编译 computepts.f 和 startupcore.f。
.f90 文件存在缺省的后缀规则,这些规则将会调用 f95 编译器。
然而,除非将 FC 宏定义为 f95,否则 .f 和 .F 文件的缺省后缀规则会调用 f77 而非 f95。
而且,当前没有为 .f95 和 .F95 文件定义后缀规则,.mod Fortran 95 模块文件将会调用 Modula 编译器。要对此进行补救,需要在调用 make 的目录下为 make.rules 文件创建您自己的本地副本,同时对该文件进行修改,添加 .f95 和 .F95 后缀规则,删除 .mod 的后缀规则。有关详细信息,请参见 make(1S) 手册页。