RaymondHuang
RaymondHuang
发布于 2023-08-13 / 101 阅读
0
0

Makefile的文件命名和文件内容

Makefile文件的命名与指定

· Make会自动查找makefile文件,查找顺序为:

GNUmakefile -> makefile -> Makefile

· GNUmakefile不建议使用,因为只有GNU make会识别,其他版本的make(如BSD make, Windows nmake等)不会识别,适合只给GNU make使用的情况。

· makefile:可以使用,GNU make和其他版本的make都可以识别。

· Makefile强烈推荐使用,最常用

· 如果运行make指令的时候没有找到上面三个文件,就会报错,这个时候可以手动指定文件名

make -f <fileName>
make --file=<fileName>

· 以下例子展示了手动指定rules.txt为Makefile的规则文件:

Makefile文件内容组成

· 一个Makefile通常由五种类型的内容组成:显示规则、隐式规则、变量定义、指令、注释

· 显示规则(Explicit Rules):显式指明何时以及如何生成或更新目标文件,显式规则包括目标、依赖和更新方法三个部分。

· 隐式规则(Implicit Rules):根据文件自动推导如何从依赖生成或更新目标文件。

下面的例子表示让Make去猜怎么从hello.cpp得到hello.o,如果猜到了就是隐式规则,猜不到就报错。

甚至可以下面一整条都可以删掉,让Make直接猜hello.o要怎么来。

· 变量定义(Variable Definitions):定义变量并指定值,值都是字符串,类似C语言中的宏定义(#define),在使用时将值展开到引用位置。

· 指令(Directives):在make读取Makefile的过程中做一些特别的操作,包括:

① 引入(包含)另一个Makefile文件,类似C语言中的#include。

② 确定是否使用或忽略Makefile文件中的一部分内容,类似C语言中的#if。

③ 定义多行变量

· 注释(Comments):以井号(#)开头的都是注释,不会被Make执行。Make中只有单行注释。如果要用到井号但不想显示为注释,请使用\#



评论