
夜深人静Makefile
文章平均质量分 70
从零开始写Makefile
MrWang.
嵌入式工程师 Linux驱动以及应用程序的开发
知其然知其所以然,每一个文章都会详细解释并给出示例代码可上机运行
不足之处请大家提出,希望与大家一起进步,共勉!
展开
-
3.6 重载其它makefile文件
有时一个m akefile文件和另一个m akefile文件相近也是很有用的。您可以使用‘include’指令把更多的m akefile文件包含进来,如此可加入更多的目标和定义的变量。然而如果两个m akefile文件对相同的目标给出了不同的命令,m ake就会产生错误。在主m akefile文件(要包含其它m akefile文件的那个)中,您可以使用通配符格式规则说明只有在依靠当前m akefile文件中的信息。原创 2023-09-18 21:57:41 · 166 阅读 · 0 评论 -
3.5 Makefile的重建
Makefiles是一种用于构建和维护软件项目的工具。它们是文本文件,包含了一系列规则和指令,告诉计算机如何编译、链接和生成可执行文件。。如果一个makefile有规则来描述如何更新它自己,或者适用一个隐含规则,那么它将在必要时被更新。在检查完所有makefile之后,如果任何一个实际上发生了变化,make会从头开始读取所有makefile,并重新构建项目。这个过程会持续进行,直到没有任何makefile发生变化。有时候,我们想阻止make对某些makefiles进行隐含规则搜索,以提高效率。原创 2023-09-17 13:00:10 · 289 阅读 · 0 评论 -
3.4 设置环境变量MAKEFILES
MAKEFILES是一个环境变量,在GNU Make中用于指定额外要读取的makefile的名称。它允许您在make执行前设置一个由空格分隔的makefile列表。这些额外的makefile将在makefile中的其他规则之前被读取,并且可以用于执行一些有用的操作。当设置了MAKEFILES环境变量时,make会先搜索这些指定的makefile,并将它们读取到构建过程中。这类似于使用include指令引入makefile的内容。原创 2023-09-16 11:48:34 · 912 阅读 · 3 评论 -
3.3 Makefile的嵌套包含
下面是一个示例Makefile和sub.mk的内容。在这个例子中,我们使用了include指令将sub.mk文件包含到Makefile中。sub.mk定义了一个变量VAR,并具有一个名为say_hello的目标,该目标会输出VAR的值。Makefile中的all目标依赖于say_hello目标,并且在执行时会输出"Hello from Makefile"。当我们运行make命令时,它会读取Makefile并暂停读取,然后读取sub.mk文件的内容。完成后,它会继续读取Makefile,找到all。原创 2023-08-06 12:09:26 · 810 阅读 · 0 评论 -
3.2 GNUmakefile、makefile和Makefile以及自命名的Makefile
如果您想要使用非标准的makefile名称,可以使用"-f"或"–file"选项指定makefile名称。参数“-f name”或“–file=name”告诉make以读取文件name作为makefile的方式进行操作。如果使用多个"-f"或"–file"选项,可以指定多个makefile。所有的makefile将按照指定的顺序进行合并。如果您使用了"-f"或"–file"选项,那么默认的makefile名称GNUmakefile、makefile和Makefile将不会自动被检查。原创 2023-08-06 00:30:32 · 608 阅读 · 0 评论 -
3.1 一个Makefile所包含的内容
Makefiles包含五种内容:显式规则、隐式规则、变量定义、指令和注释。显式规则:指定何时以及如何重新生成一个或多个文件,被称为目标(targets)。它列出了目标所依赖的其他文件,称为目标的先决条件(prerequisites),并且可能提供了用于创建或更新目标的命令。隐式规则:根据文件名指定何时以及如何重新生成一类文件。它描述了目标如何依赖于与目标类似的文件,并提供了用于创建或更新此类目标的命令。变量定义:是指为变量指定一个文本字符串值的行,稍后可以将其替换到文本中。原创 2023-08-05 10:08:51 · 188 阅读 · 0 评论 -
2.7 Makefile的清除规则make clean
并且恰好存在与目标同名的实际文件,那么make将认为该目标已经 “up to date”,也就是已经是最新状态,因此不会执行与该目标关联的命令。是一个伪目标,而不是实际的文件。通过这样做,即使存在一个名为"clean"的实际文件,make也不会与之混淆,也可以忽略。指示符,我们可以确保在Makefile中定义的清理目标始终会执行其命令,而不受同名实际文件的干扰。是一个特殊的目标属性,用于告诉make该目标不对应于实际的文件。时,无论是否存在与目标同名的文件,make都会执行与该目标关联的命令。原创 2023-08-04 10:39:38 · 2246 阅读 · 0 评论 -
2.6 目标前置条件分组的Makefile
这两种风格的 makefile 实现的功能是相同的,但基于前置条件的分组风格将目标和其依赖的前置条件更紧密地组合在一起,使得 makefile 更加简洁和易于维护。然而,有些人可能更喜欢传统风格的 makefile,因为它们将每个目标的相关信息放在一起,更容易理解和修改。选择使用哪种风格取决于个人偏好和项目需求。当使用传统的 makefile 风格时,每个目标都在单独的条目中定义,其中包含了该目标的依赖关系和构建规则。原创 2023-08-03 18:58:49 · 286 阅读 · 0 评论 -
2.5 Makefile使用自动推导(附示例)
现在有main.ca.cb.ca.hb.h以下是构建的文件及其内容:这样,主程序main.c通过引用头文件a.h和b.h,分别调用了a.c中的print_a()函数和b.c中的print_b()函数。每个文件中都有相应的打印语句,以输出对应的文件名和所包含的文件。原创 2023-08-02 09:39:40 · 550 阅读 · 0 评论 -
2.4 Makefile变量的用法(附示例)
本专栏所有内容围绕Makefile官方文档进行刨析,给出详细具体示例做辅助理解。原创 2023-07-30 20:07:40 · 267 阅读 · 0 评论 -
2. Makefile之目标、依赖(附示例)
本专栏所有内容围绕Makefile官方文档进行刨析,给出详细具体示例做辅助理解。原创 2023-07-23 12:14:56 · 1325 阅读 · 0 评论 -
1. Makefile版本1(基础版)
执行make命令时,它会去当前目录下查找名为Makefile的文件,并根据它的指示去执行操作,生成第一个目标。原创 2023-07-20 18:27:03 · 191 阅读 · 0 评论