码迷,mamicode.com
首页 > 其他好文 > 详细

Makefile书写注意事项,个人择记

时间:2015-05-10 15:27:32      阅读:111      评论:0      收藏:0      [点我收藏+]

标签:

 

技术分享
 1 #sample Makefile
 2 edit : main.o kbd.o command.o display.o  3 insert.o search.o files.o utils.o
 4     cc -o edit main.o kbd.o command.o display.o  5         insert.o search.o files.o utils.o
 6 main.o : main.c defs.h
 7     cc -c main.c   
 8 kbd.o : kbd.c defs.h command.h
 9     cc -c kbd.c
10 command.o : command.c defs.h command.h
11     cc -c command.c
12 display.o : display.c defs.h buffer.h
13     cc -c display.c
14 insert.o : insert.c defs.h buffer.h
15     cc -c insert.c
16 search.o : search.c defs.h buffer.h
17     cc -c search.c
18 files.o : files.c defs.h buffer.h command.h
19     cc -c files.c
20 utils.o : utils.c defs.h
21     cc -c utils.c
22 clean :
23     rm edit main.o kbd.o command.o display.o 24     insert.o search.o files.o utils.o
View Code

示例Makefile如上

1、将一个较长的行使用反斜线(\)来分解多行,这样可以使我们的Makefile书写清晰、容易阅读理解。但需要注意:反伯斜线之后不能有空格(这也是大家最容易犯的错误,错误比较隐蔽)。

2、命令行定义了规则的动作(如何根据依赖文件来更新目标文件)。命令行必需以[Tab]字符开始,以和Makefile其他行区别。就是说所有的命令行必需以[Tab]字符开始,但并不是所有的以[Tab]键出现行都是命令行。但make程序会把出现在第一条规则之后的所有以[Tab]字符开始的行都作为命令行来处理。(记住:make程序本身并不关心命令是如何工作的,对目标文件的更新需要你在规则描述中提供正确的命令。 “make”程序所做的就是当目标程序需要更新时执行规则所定义的命令)

 3、目标”clean“不是一个文件,它仅仅代表执行一个动作标识。正常情况下,不需要执行这个规则所定义的动作,因此目标”clean“没有出现在其它任何规则的依赖列表中。因此在执行make时,它所指定的动作不会被执行。除非在执行make时明确指定它。而且目标”clean“没有任何依赖文件,它只有一个目的,就是通过这个目标名来执行它所定义的命令。Makefile中把那些没有任何依赖只有执行动作的目标称为”伪目标“(Phony targets)。需要执行"clean"目标所定义的命令,可在shell下输入make clean

Makefile书写注意事项,个人择记

标签:

原文地址:http://www.cnblogs.com/tkid/p/4492210.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!