1.makefile文件的内容主要包含以下几个内容:
- 显示规则:显示规则说明了如何生成一个或者多个目标文件。即makefile的书写者明显的指出要生成的文件,文件的依赖关系,生成命令。如果有多个目标,默认第一个目标为最终目标。
- 隐晦规则:由于make有自动推导的功能,所以隐晦规则可以让我们比较粗略地书写makefile。
- 变量定义:makefile中可以定义一系列的变量,变量一般都是字符串,和C中的宏相似。当makefile被执行时,其中的变量都会被扩展到相应的引用位置上。
- 文件指示:一个makefile文件中可以引用另一个makefile。
- 注释:makefile中只有行注释,注释符:#,这个和java中的//一样。如果需要在makefile中使用“#”,可以使用反斜杠转义。
关于“隐晦规则”后续会进行学习说明。
注:makefile中的命令必须以Tab开始。
2.文件引用
语法:
include <filename>
注:
- filename中可以包含路径和通配符
- include前面可以有一些空字符,但是不可以以Tab键开始
示例:
有以下几个文件:a.mk b.mk c.mk foo.make
还有一个变量$(bar),其包含了e.mk f.mk
那么: include foo.make *.mk $(bar)
等价于
include foo.make a.mk b.mk c.mk e.mk f.mk
3.通配符的使用
make支持三种通配符:* ? [...]
- *:匹配0或多个字符
- ?:匹配任意单一字符
- [...]:匹配...中的任意单一字符
4.文件搜索
由于在一些大的工程中,源文件数量很多,所以当make需要找寻文件的依赖关系时,就需要知道文件的路径。
以下是设置路径的方法:
- makefile文件中的特殊变量“VPATH”
- make的关键字“vpath”(全部小写)
(1)VPATH:
当makefile中指定了这个变量,make就会在当前目录找不到的情况下到指定的目录文件中去找寻;否之,make只会在当前的目录文件中去寻找依赖文件和目标文件。
例如:VPATH=src:../headers
说明:
- 目录之间由":"分隔,所以上面的定义指定了两个目录:src ../headers
- 当前目录永远是最高级优先搜索的地方
(2)关键字:vpath
和上面的VPATH变量很类似,但是更为灵活。
使用方法有以下三种:
- vpath <pattern> <directories>
为符合模式<pattern>的文件指定搜索目录<directories>
清除符合模式<pattern>的文件的搜索目录
清除所有已经被设置好了的文件搜索目录
说明:
- vpath使用方法中的<pattern>需要包含“%”字符,意思是匹配零个或者若干个字符
eg “%.h” :所有以“.h”结尾的文件
- <pattern>指定了要搜索的文件集,<directories>则指定了文件的搜索目录
eg vpath %.h ../headers :表示make在 ./headers目录下搜索所有以 .h 结尾的文件(如果在当前目录下没有找到的话)
- 可以连续的使用vpath,以指定不同的策略,make会按照语句顺序执行
eg vpath %.c foo
vpath % blish
vpath %.c bar
分享到:
相关推荐
《跟我一起写makefile》和《gnumakefile》是两本关于makefile的重要学习资料,它们涵盖了构建自动化工具make的使用、配置以及优化等多个方面。makefile是软件开发中的核心部分,它允许开发者通过简洁的规则定义来...
这个压缩包“Makefile学习参考资料.zip”包含了两份PDF文档,分别是“跟我一起学Makefile.pdf”和“gun_make.pdf”,很可能是关于Makefile的基础教程和GNU Make的官方文档。 在Makefile中,最重要的概念是目标...
以下详细阐述了make以及makefile的学习要点: 1. Makefile概述 Makefile是一个脚本文件,其中包含了编译和链接项目所需的各种规则。它描述了项目中哪些文件需要先编译,哪些文件需要后编译,哪些文件依赖于其他文件...
学习Makefile不仅是掌握其语法,更重要的是理解其背后的编译和链接机制。通过合理组织Makefile,可以高效地管理和自动化复杂的构建过程。对于程序员来说,了解Makefile是走向专业化的必经之路。特别是当涉及到跨平台...
《Makefile学习手册》是一本专门针对Makefile开发的详细指南,旨在帮助读者从基础到深入地理解并掌握这一强大的构建工具。Makefile是软件工程中用于自动化编译和链接过程的重要文件,尤其在Unix/Linux环境中广泛使用...
《makefile学习三件套 电子书》是一个针对makefile技术的综合学习资源,它包含了三个核心部分:《gnu make》、《GNU make中文手册》和《跟我一起写Makefile》。这些文档旨在帮助读者深入理解和掌握makefile的编写与...
### Make工具及makefile规则学习 #### 一、Make工具的功能 Make工具是一种自动化构建工具,主要用于管理和构建大型软件项目。其主要功能包括: - **避免不必要的重复编译**:通过检查文件的时间戳来确定哪些文件...
Makefile学习资料.rarMakefile学习资料.rarMakefile学习资料.rarMakefile学习资料.rarMakefile学习资料.rarMakefile学习资料.rarMakefile学习资料.rarMakefile学习资料.rarMakefile学习资料.rarMakefile学习资料....
* 学习曲线陡峭:Makefile 的语法非常复杂,需要花费一些时间来学习和掌握。 * 不好 debug:Makefile 的错误信息不够明确, debug 相对困难。 Makefile 是一个功能强大且灵活的自动化编译工具,在软件开发过程中...
Makefile学习教程: 跟我一起写 Makefile 0 Makefile概述 0.1 关于程序的编译和链接 1 Makefile 介绍 1.1 Makefile的规则 1.2 一个示例 1.3 make是如何工作的 1.4 makefile中使用变量 1.5 让make自动推导 ...
Makefile学习笔记 Makefile是一个编译系统自动构建工具,它可以根据源文件的变化自动编译和链接对象文件,并生成执行文件。Makefile文件包含了一系列的规则和命令,这些规则和命令描述了如何从源文件生成目标文件。...
make中文手册等 小测试: # Readme: # use: make config # use: make dir # use: make # use: make clean # use: make rebuild # use: make cleanall # use: make test # use: make
压缩包中的三份PDF文件分别对应以上三本书的内容,它们构成了一个完整的makefile学习资源库。首先,你可以通过《跟我一起写makefile》快速入门,了解makefile的基本构造和使用。然后,深入研究GNU Make Manual,掌握...
标题中提到的“Makefile教程”是指关于Makefile的学习资料,而“Makefile快速学习资料”说明本资料是为快速掌握Makefile编写的入门级教程。Makefile是Unix系统中的一个工具程序,主要用于软件开发中的自动化编译。它...
这个`makefile学习用测试文件.rar`很显然是为了帮助初学者理解和掌握`Makefile`的基本概念和用法。在本文中,我们将深入探讨`Makefile`的主要组成部分,以及如何编写和使用它来编译和管理项目。 `Makefile`的核心...
通过学习和理解`makefile`,程序员不仅可以更好地组织和管理代码,还能提升大型项目的构建效率,这对于成为一名专业的Linux C程序员来说是必不可少的技能。因此,深入学习`makefile`的编写规则和实践是每个Linux C...
这篇学习笔记将深入探讨`Makefile`的核心概念、语法和实际应用。 首先,我们要理解`Makefile`的作用。在开发大型项目时,源代码文件可能有很多,每次修改后手动编译所有文件会非常低效。`Makefile`能够跟踪文件依赖...