本文共 1219 字,大约阅读时间需要 4 分钟。
微信搜索【编程笔记本】
让我们一起来学习编程吧
今天来跟大家分享一下 Makefile 的入门教程。
all:book0 book1 book2 # 所有要编译的文件book0:book0.c # 编译 book0 时依赖的文件是 book0.c # 再次执行 make 命令时,若 book0.c 未改变,则不编译 book0 gcc -g -o book0 book0.c # 编译动作 # 行前必须是一个 Tab ,不能是空格book1:book1.c gcc -g -o book1 book1.cbook2:book2.c gcc -g -o book2 book2.cclean: # 当执行 make clean 命令时,将执行如下指令 rm -rf book0 book1 book2
上面就写好了一个简单的 Makefile 了。有一点值得注意的是:
make
指令时,默认是执行 make all
,即编译所有文件;make book0
指令时,编译的是 book0.c
一个文件;make clean
时,将会删除所有的可执行文件。也就是说,Makefile 中的编译动作是可以分标签进行的。
微信搜索【编程笔记本】
让我们一起来学习编程吧
上面的编译动作都是我们逐个写上去的,如果我们需要修改所有文件的编译选项,如添加 -std=c99
,此时我们只能逐条添加,这样势必会变得低效。下面一种书写方式将会高效许多。
CC=gcc # 变量,其实质是字符串的替换FLAG=-g -std=c99all:book0 book1 book2book0:book0.c $(CC) $(FLAG) -o book0 book0.c # 使用变量方法:$(变量)book1:book1.c $(CC) $(FLAG) -o book1 book1.cbook2:book2.c $(CC) $(FLAG) -o book2 book2.cclean: rm -rf book0 book1 book2
在这种书写方式下,如果我们需要批量修改编译选项时,只需修改 FLAG
变量的内容即可。这种变量的本质其实就是单纯的字符串替换。
Makefile 可以写得非常强大和复杂,但无非就是上面这种形式在代码量上增加而已,本质就是如此。
微信搜索【编程笔记本】
让我们一起来学习编程吧
转载地址:http://phkgn.baihongyu.com/