makefile的简单使用
2017-04-02 17:08
169 查看
makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。
make是一个命令工具,是一个解释makefile中指令的命令工具
target... : prerequisites ...
command
...
...
-------------------------------------------------------------------------------
target也就是一个目标文件,可以是.o文件,也可以是执行文件。
prerequisites就是要生成那个target所需要的文件或是目标一般是
.h和 .cpp文件。
command也就是make需要执行的命令。
例如:
以“$(objects)”的方式来使用上面定义的变量,
反斜杠(\)是换行符的意思,这样比较便于Makefile的易读。
我们可以把这个内容保存在文件为“Makefile”或“makefile”的文件中,然后在该目录下直接输入命令“make”就可以生成执行文件edit。如果要删除执行文件和所有的中间目标文件,那么,只要简单地执行一下“make clean”就可以了
在输入make命令后:
make会在当前目录下找名字叫“Makefile”或“makefile”的文件。
如果找到,它会找文件中的第一个目标文件(target),在上面的例子中,他会找到“medrank”这个文件,并把这个文件作为最终的目标文件。
如果medrank文件不存在,或是medrank所依赖的后面的
.o 文件的文件修改时间要比medrank这个文件新,那么,他就会执行后面所定义的命令来生成medrank这个文件。
如果medrank所依赖的.o文件也不存在,那么make会在当前文件中找目标为.o文件的依赖性,如果找到则再根据那一个规则生成.o文件。(这有点像一个堆栈的过程)
当然,你的.cpp文件和.h文件是存在的啦,于是make会生成 .o 文件,然后再用 .o 文件声明make的终极任务,也就是执行文件medrank了。
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只管文件的依赖性,即,如果在我找了依赖关系之后,冒号后面的文件还是不在,那就不工作。
相关文章推荐
- 使用autotools建立Makefile简单实例解析
- 使用autotools建立Makefile简单实例解析
- 最简单 的入门且最直观的Makefile和.so文件编译链接使用方法
- ctags 和Makefile的简单使用
- linux中make命令的简单使用以及Makefile文件的书写
- ctags 和Makefile的简单使用
- 使用makefile的简单例子
- 从小程序中看make和Makefile的简单使用
- Ubuntu下makefile及gcc生成静态库动态库的简单使用举例
- 从小程序中看make和Makefile的简单使用
- gcc的Makefile的简单使用
- makefile 简单使用
- 简单记录一下makefile的使用
- Ubuntu下makefile的简单使用
- 使用autotools建立Makefile简单实例解析
- linux使用pkg-config写简单的Makefile
- 使用autotools简单生成Makefile
- Ubuntu下makefile及gcc生成静态库动态库的简单使用举例
- makefile简单使用(二)
- Makefile和gdb的简单使用