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

 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

示例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

时间: 2024-08-04 13:20:01

Makefile书写注意事项,个人择记的相关文章

Makefile书写注意事项--个人择记(二)

第三章 Makefile 总述 在一个完整的Makefile中,包含了5个东西:显式规则.隐含规则.变量定义.指示符和注释. 显式规则.隐含规则.变量定义和注释省略,以下只简单介绍指示符 Makefile指示符:指示符指明在make程序读取makefile文件过程中所要执行的一个动作.其中包括: 1.读取一个文件,读取给定文件名的文件,将其内容作为makefile文件的一部分 2.决定(通常是根据一个变量的得值)处理或者忽略makefile中的某一特定部分. 3.定义一个多行变量.

编写makefile时注意事项

CFLAGS=-Wall -g  这个-Wall开头字母一定要大写.这种小错误会导致不能编译! 其次就是在一个目录下面的应该是文件 ,而不能在继续用文件去进行编写代码,因为make寻找当前目录下的makefile,makefile里面用到的文件而不是目录里的代码,如果需要也要通过-l(l链接link)一下.所以再一个目录下,编写文件尽量用vi命令,而不是mkdir.这两个区别要搞清楚.文件与目录还是有区别的. linux mkdir 命令用来创建指定的名称的目录,要求创建目录的用户在当前目录中具

CSS命名规范参考及书写注意事项

CSS书写顺序 *{ /*显示属性*/ display position float clear cursor - /*盒模型*/ margin padding width height /*排版*/ vertical-align white-space text-decoration text-align - /*文字*/ color font content /*边框背景 为什么要把 boder和background放在最后的原因是修改的频率会较之前的频繁,放在最后查看起来方便,哈哈.*/ 

跟我一起写Makefile:书写规则

书写规则 规则包含两个部分,一个是依赖关系,一个是生成目标的方法. 在Makefile中,规则的顺序是很重要的,因为,Makefile中只应该有一个最终目标,其它的目标都是被这个目标所连带出来的,所以一定要让make知道你的最终目标是什么.一般来说,定义在Makefile中的目标可能会有很多,但是第一条规则中的目标将被确立为最终的目标.如果第一条规则中的目标有很多个,那么,第一个目标会成为最终的目标.make所完成的也就是这个目标. 好了,还是让我们来看一看如何书写规则. 规则举例 foo.o

py-faster-rcnn 的makefile.config 注意事项

在配置py-faster-rcnn的过程中,我遇到一些问题,记录如下 py-faster-rcnn文件夹下面有一个caffe-fast-rcnn文件夹 这个过程中,我们需要编译caffe, rbgirshick 大神的caffe和caffe官网的版本不太一样 我第一次直接照搬caffe的makefile.config,导致了很多错误 rbgirshick 大神说,需要打开 WITH_PYTHON_LAYER := 1                     和  USE_CUDNN := 1 N

buildroot-2015.05-rc1 择记

• images/ where all the images (kernel image, bootloader and root filesystem images) are stored. These are the files you needto put on your target system.• build/ where all the components are built (this includes tools needed by Buildroot on the host

Makefile文件(三)_书写规则

Makefile书写规则包含两部分,一个是依赖关系,一个是生成目标.在Makefile中,规则的顺序很重要,因为Makefile中只有一个最终目标.一般,定义在Makefile中的目标可能会有很多,但是第一条规则中的目标将被确立为最终目标.如果第一条规则中的目标有多个,那么第一个目标会成为最终目标,也就是make所完成的目标. 一.规则举例 foo.o:foo.c defs.h  #foo模块 cc -c -g foo.c 这个规则告诉我们:文件的依赖关系,还有如果要生成或更新foo.o文件,则

一篇文章教你读懂Makefile

makefile很重要      什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂.这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义.特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力.因为,makefil

Makefile经典教程(掌握这些足够)

makefile很重要http://blog.csdn.NET/ruglcc/article/details/7814546      什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂.这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义.特别在Unix下的软件编译,你就不能不自己写makefil