美文网首页
理解Makefile

理解Makefile

作者: 泥人吴 | 来源:发表于2018-12-01 10:07 被阅读0次

Makefile是什么,make又是什么

代码变成可执行文件,叫做编译(compile);先编译这个,还是先编译那个(即编译的安排),叫做构建(build)。
Make是最常用的构建工具,诞生于1977年,主要用于C语言的项目。但是实际上 ,任何只要某个文件有变化,就要重新构建的项目,都可以用Make构建;但是make依赖一定的规则
像这样的规则,都写在一个叫做Makefile的文件中,Make命令依赖这个文件进行构建。Makefile文件也可以写为makefile, 或者用命令行参数指定为其他文件名。
总之,make只是一个根据指定的Shell命令进行构建的工具。它的规则很简单,你规定要构建哪个文件、它依赖哪些源文件,当那些文件有变动时,如何重新构建它。

以tree为例子学习:

  • 三种方式修改prefix的变量名:
vip39@VM-0-15-ubuntu:~/src/tree-1.8.0$ vim Makefile
...
prefix = /usr

CC=gcc

VERSION=1.8.0
TREE_DEST=tree
...

# 修改prefix
vip39@VM-0-15-ubuntu:~/src/tree-1.8.0$ make install prefix=$HOME/opt/sysoft
install -d /home/vip39/opt/sysoft/bin
install -d /home/vip39/opt/sysoft/man/man1
if [ -e tree ]; then \
    install tree /home/vip39/opt/sysoft/bin/tree; \
fi
install doc/tree.1 /home/vip39/opt/sysoft/man/man1/tree.1

# 修改Makefile 中的prefix为:
# vim Makefile:
prefix = $(HOME)/opt/sysoft #此处HOME需要添加()

vip39@VM-0-15-ubuntu:~/src/tree-1.8.0$ make
make: Nothing to be done for 'all'.
vip39@VM-0-15-ubuntu:~/src/tree-1.8.0$ make install
install -d /home/vip39/opt/sysoft/bin
install -d /home/vip39/opt/sysoft/man/man1
if [ -e tree ]; then \
    install tree /home/vip39/opt/sysoft/bin/tree; \
fi
install doc/tree.1 /home/vip39/opt/sysoft/man/man1/tree.1

源码编译三部曲:make小结

  • configure执行时会根据环境变量去替换makefile中的变量
  • make var=value 会将Makefile中的var赋值为value
  • 如果一个makefile需要调用另一个makefile,相当于开了一个子进程

C/C++软件安装小结

  • 首先安装编译好的安装包
  • 安装的重点是编译好Makefile

相关文章

网友评论

      本文标题:理解Makefile

      本文链接:https://www.haomeiwen.com/subject/amjlcqtx.html