Sun Studio 12:Fortran 编程指南

3.1.1 Makefile

名为 makefile 的文件以结构化方式告知 make,哪些源文件和目标文件依赖其他文件。它还定义了编译和链接文件所需的命令。

例如,假设您的程序有四个源文件以及相应的 makefile 文件:


demo% ls
makefile
commonblock
computepts.f
pattern.f
startupcore.f
demo%

假设 pattern.fcomputepts.f 都有一个名为 commonblockINCLUDE,并且您希望编译每个 .f 文件并将这三个可重定位的文件与一系列库一起链接成一个名为 pattern 的程序。

这时,makefile 将会如下所示:


demo% cat makefile
pattern: pattern.o computepts.o startupcore.o
      f95 pattern.o computepts.o startupcore.o -lcore95 \
      -lcore -lsunwindow -lpixrect -o pattern
pattern.o: pattern.f commonblock
      f95 -c -u pattern.f
computepts.o: computepts.f commonblock
      f95 -c -u computepts.f
startupcore.o: startupcore.f
      f95 -c -u startupcore.f
demo%

makefile 的第一行表明 pattern 的创建取决于 pattern.ocomputepts.ostartupcore.o。下一行及其后续各行给出了由可重定位的 .o 文件和库创建 pattern 的命令。

makefile 中的每一条目都是一项规则,它描述了目标对象的依赖性以及创建该对象所需的命令。规则的结构为:

target: dependencies-listTAB build-commands