makefile 1 编写一个简单的makefile

时间:2022-09-01 21:09:51

make程序可以自动编译编写的原代码文件,相较于脚本,make的优点是:你可以把程序中各文件之间的关系告诉make,然后make会根据这些关系和时间戳判断应该重新进行哪些步骤,以产生你所需要的程序,当然make还可以优化编译过程,跳过非必要的步骤。

GNU make(还有make的其他变体 vs nmake等等)可以准确完成此事。make定义了一种语音,可用来描述源文件,中间文件以及可执行文件的关系。它还提供了一些功能,来管理各种候选配置、实现可重用程序库的细节以及让用户以自定义宏将过程参数化。简言之,make常被视为开发过程的核心,因为它为应用程序的组件以及这些组建的搭配方式提供了一个可依循的准则。

make一般会将工作细节存放在一个名为makefile的文件中,下面似乎一个可用来编译简单程序的makefile:

hello: hell.c

gcc hello.c -o hello

要编译此程序,你可以在命令行提示符之后键入:

$ make

gcc hello.c -o hello

如果将某个工作目标指定成命令行参数,make就会特别针对这个工作目标进行更新的动作,如果命令行上未指定任何工作目录,make就会蚕蛹makefile文件中第一个工作目标,成为默认目标

在大多数makefiel文件中,默认的目标一般就是编译程序,这通常涉及许多步骤。程序的源代码经常似乎不完整的,而且必须使用flex之类的工具来产生源代码。接着,源代码必须被编译成二进制目标文件.o文件用于c/c++。然后,对c/c++而言,连接器会将这些目标文件链接在一起形成一个可执行文件。

修改源代码中的任何内容并重新调用make,将会使得这些步骤中的某些被重复进行,因此源代码中的变更会被适当的并入可执行文件。使得make能够以最少的工作量来完成更新可执行文件的工作。

所以,make的主要价值在于他有能力完成编译应用程序时所需要的一些列复杂步骤。