您好,欢迎来到年旅网。
搜索
您的当前位置:首页Windows 下的 Makefile 编写(一)Makefile的基本规则

Windows 下的 Makefile 编写(一)Makefile的基本规则

来源:年旅网
编写(一)的基本规则作者:

对于很多人来说是陌生的,特别是习惯于使用的人来说,似乎没有听,因为的工作都由代劳了。但是的地位是说过

不可忽略的,从诞生到现在这个实用程序就一直伴随着编译器一起发行。

很多大的工程都是基于编译和维护的,对于开源项目来说,大多数都使用

进行编译,使用来编译大型工程是不可想象的。

是什么?它是一个文本文件,里面记录着项目由哪些目标构成,以及各个目

标的生成方式等信息,的核心任务是定义一系列的规则,然后由来解释执行,任何一个文本编辑器都可以用来编写。

先来大概看一下的基本规则:

下的

是目标,目标可以是一个文件,也可以是一个标签,如果用作标签,则称之为伪目标。至少要有一个目标。

是依赖项目,指明目标所依赖的具体项目。依赖项目和目标之间用号分隔。是命令,如果命令和依赖项目在同一行,则需要使用号与之相隔,各个命令之间

使用空格或键分开,如果命令是单独一行,则需要使用缩进。命令由

来执行。

上述内容简单地表明了一个依赖关系,生成目标依赖中指定的文件,而生成的规则由来定义,负责执行这些命令。

默认情况下,会查找当前目录下任何名称为的文件(名称不区分大小写,并且没有后缀),如果你的文件名称是其他的,则需要使用参数指定。

以上就是的核心内容,任何系统的都是这样执行的。但是要写好一个,仅仅这些还不够。对于一个新知识,我更喜欢从做中学。下面举一个例子来说明上面的规则在实际应用中如何操作:

仅编译文件在

中注释使用号开头,且仅有这一种注释方式。它的作用和

注释是一样的。所不同的是号必须放在行首。上面的文件指定了两个目标,分别是和

需要依赖文件,而生成文件依赖

语法中的,生成

。在目标

下方指明了生成该目标方法。

的内容如下:#include int main() { printf(\"Hello Makefile!\\n\"); return 0; } 将和命令,就会自动生成试一下:

放置于同一目录下,在的命令提示符窗口中执行和两个文件。再运行生成后的

中定义了两个目标,默认只生成中的第一个目标,由

于是的依赖项,所以目标也得以执行。

是不是每执行一次命令就会重新生成一次目标文件呢?答案:不是。每次都重新生成目标显然是一种资源浪费,是根据时间戳来决定是否需要重新生成目标。只有在依赖文件不存在或者依赖文件时间高于目标文件时,才会生成目标。

前面的例子已经生成了目标文件,如果修改了中的代码或者删除了

,都将会重新生成。

一般来说,为了使清理中间文件或重新生成目标更加方便,都会在中加入一个伪目标来清理生成的中间文件。以删除为例,修改如下:在

仅编译文件是一个伪目标,只是作为标签使用。下的指令是命令行下的删除文件命令和显示一个字符串。在命令前加符号是为了不显示命令本身。

默认情况下只会生成第一个目标,不会执行到目标,如果要指定生成目标,需要显式指定目标名称:就指定要执行一行文字:

中的

伪目标。执行之后会删除生成的

并显示

还可以指定多个目标,会从左往右依次生成目标。所以如果要在清除中间之后立即生成,可以这么做:

一般来说,总是把最终生成的目标放在最前,而把清理中间文件的伪目标放到最后。下

的其他内容。一回,我会结合实际的例子再介绍

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- oldu.cn 版权所有 浙ICP备2024123271号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务