初识Makefile

来源:互联网 发布:windows script engine 编辑:程序博客网 时间:2024/06/05 13:28
1.为什么需要Makefile?
       在LInux下,一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell一样,其中也可以执行操作系统的命命令。
2.什么是Makefile?
        所要完成的Makefile 文件描述了整个工程的编译、连接等规则。其中包括:工程中的哪些源文件需要编译以及如何编译、需要创建那些库文件以及如何创建这些库文件、如何最后产生我们想要的可执行文件。尽管看起来可能是很复杂的事情,但是为工程编写Makefile 的好处是能够使用一行命令来完成“自动化编译”,一旦提供一个(通常对于一个工程来说会是多个)正确的 Makefile。编译整个工程你所要做的唯一的一件事就是在shell 提示符下输入make命令。整个工程完全自动编译,极大提高了效率。
make是一个命令工具,它解释Makefile 中的指令(应该说是规则)。在Makefile文件中描述了整个工程所有文件的编译顺序、编译规则。Makefile 有自己的书写格式、关键字、函数。像C 语言有自己的格式、关键字和函数一样。而且在Makefile 中可以使用系统shell所提供的任何命令来完成想要的工作。Makefile(在其它的系统上可能是另外的文件名)在绝大多数的IDE 开发环境中都在使用,已经成为一种工程的编译方法。
3.如何编写Makefile文件?
   在Makefile中,Makefile是一个文本文件,与之对应的命令是make,编写Makefile文件是需要注明依赖文件和依赖关系。
目标文件:依赖文件
                  依赖关系               
4.下面我们就来一起写一个简单的Makefile文件
(1)先编辑一个hello.c的文件
(2)touch一个Makefile文件并且编辑Makefile
注意 :hello:hello.c 这里 hello 文件依赖于hello.c文件
gcc  -o 编译的规则:-o是目标文件 
clean在这里相当于一条命令,并没有依赖文件,所以只用写一个clean即可。
它的作用是删除可执行程序hello文件。
(3)使用make命令
这时候目标文件hello就编译链接好了。
然后运行hello文件,我们看结果
运行结果成功
(4)clean,当这种后面不跟依赖文件的时候,那么踏后面跟的命令将不会被执行,当我们需要执行clean来删除工程时,make clean就可以了。
这就是一个简单的Makefile的编写。



原创粉丝点击