您的位置:首页 > 编程语言 > C语言/C++

makefile的简单使用

2017-04-02 17:08 169 查看
makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。

make是一个命令工具,是一个解释makefile中指令的命令工具


Makefile的规则

          target... : prerequisites ...

          command

          ...

          ...

         -------------------------------------------------------------------------------


       target也就是一个目标文件,可以是.o文件,也可以是执行文件。

       prerequisites就是要生成那个target所需要的文件或是目标一般是
.h .cpp文件。

       command也就是make需要执行的命令。

   例如:

    


以“$(objects)”的方式来使用上面定义的变量,
 反斜杠(\)是换行符的意思,这样比较便于Makefile的易读。

我们可以把这个内容保存在文件为“Makefile”或“makefile”的文件中,然后在该目录下直接输入命令“make”就可以生成执行文件edit。如果要删除执行文件和所有的中间目标文件,那么,只要简单地执行一下“make clean”就可以了


Make是如何工作的

在输入make命令后:

  make会在当前目录下找名字叫“Makefile”或“makefile”的文件。
  如果找到,它会找文件中的第一个目标文件(target),在上面的例子中,他会找到“medrank”这个文件,并把这个文件作为最终的目标文件。
  如果medrank文件不存在,或是medrank所依赖的后面的
.o 文件的文件修改时间要比medrank这个文件新,那么,他就会执行后面所定义的命令来生成medrank这个文件。
  如果medrank所依赖的.o文件也不存在,那么make会在当前文件中找目标为.o文件的依赖性,如果找到则再根据那一个规则生成.o文件。(这有点像一个堆栈的过程)
  当然,你的.cpp文件和.h文件是存在的啦,于是make会生成 .o 文件,然后再用 .o 文件声明make的终极任务,也就是执行文件medrank了。

这就是整个make的依赖性,make会一层又一层地去找文件的依赖关系,直到最终编译出第一个目标文件。在找寻的过程中,如果出现错误,比如最后被依赖的文件找不到,那么make就会直接退出,并报错,而对于所定义的命令的错误,或是编译不成功,make根本不理。make只管文件的依赖性,即,如果在我找了依赖关系之后,冒号后面的文件还是不在,那就不工作。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ makefile