如果一个程序包含多个源文件,怎样使它们都能正常工作?
编译程序中包含一个MAKE工具(通常叫做MAKE.EXE,NMAKE.EXE或其它类似的名字),其作用是记录项目以及组成项目的源文件之间的依赖关系。下面是一个典型的MAKE文件的例子。
myapp. ohj : myapp. c myapp. h
cl-c myapp. c
utility. obj : utility. c myapp. h
cl-c utility. c
myapp, exe : myapp. obj utility. obj
cl myapp. obj utility. obj
这个例子表明myapp.obj依赖于myapp.c和myapp.h,utility.obj依赖于utility.c和myapp.h,myapp.exe依赖于myapp.obj和utility.obj。在表示依赖关系的每一行下面,都附有一条对相应的目标进行重新编译或重新连接的编译程序命令。例如,myapp.obj是通过执行下面的命令行重新生成的:
cl-c myapp.c
在上面的例子中,只有在myapp.c或myapp.h的时间标志晚于myapp.obj的时间标志时,myapp.obj才会被重新编译。同样,只有在utility.c或myapp.h的时间标志晚于utility.obj的时间标志时,utility.obj才会被重新编译;只有在myapp.obj或utility.obj的时间标志晚于myapp.exe的时间标志时,myapp.exe才会被重新连接。
如果一个大型项目包含着源文件依赖关系,那么用MAKE文件来处理是非常方便的。
MAKE工具及其相关的命令和实现因编译程序的不同而不同——关于如何使用MAKE工具,你可以查阅你的编译程序文档。
今天,大多数编译程序都带有集成开发环境,你可以在其中用项目文件来管理程序中的多个源文件,如果你有一个集成环境,你就不必去了解MAKE工具的复杂用法,并且可以很方便地管理项目中的源文件,因为集成环境会为你记录所有的源文件依赖关系。
myapp. ohj : myapp. c myapp. h
cl-c myapp. c
utility. obj : utility. c myapp. h
cl-c utility. c
myapp, exe : myapp. obj utility. obj
cl myapp. obj utility. obj
这个例子表明myapp.obj依赖于myapp.c和myapp.h,utility.obj依赖于utility.c和myapp.h,myapp.exe依赖于myapp.obj和utility.obj。在表示依赖关系的每一行下面,都附有一条对相应的目标进行重新编译或重新连接的编译程序命令。例如,myapp.obj是通过执行下面的命令行重新生成的:
cl-c myapp.c
在上面的例子中,只有在myapp.c或myapp.h的时间标志晚于myapp.obj的时间标志时,myapp.obj才会被重新编译。同样,只有在utility.c或myapp.h的时间标志晚于utility.obj的时间标志时,utility.obj才会被重新编译;只有在myapp.obj或utility.obj的时间标志晚于myapp.exe的时间标志时,myapp.exe才会被重新连接。
如果一个大型项目包含着源文件依赖关系,那么用MAKE文件来处理是非常方便的。
MAKE工具及其相关的命令和实现因编译程序的不同而不同——关于如何使用MAKE工具,你可以查阅你的编译程序文档。
今天,大多数编译程序都带有集成开发环境,你可以在其中用项目文件来管理程序中的多个源文件,如果你有一个集成环境,你就不必去了解MAKE工具的复杂用法,并且可以很方便地管理项目中的源文件,因为集成环境会为你记录所有的源文件依赖关系。