理解Makefile

2018-12-01  本文已影响0人  泥人吴

Makefile是什么,make又是什么

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

以tree为例子学习:

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小结

C/C++软件安装小结

上一篇 下一篇

猜你喜欢

热点阅读