Linux下的Makefile是一个用于自动化编译和链接C/C++等程序的工具
-
规则(Rule):Makefile中的规则定义了如何生成一个或多个目标文件。每个规则包含三个部分:目标(Target)、依赖(Dependencies)和命令(Commands)。
格式:
目标: 依赖 命令
-
变量(Variable):Makefile中可以使用变量来存储一些常用的值,例如编译器、编译选项等。变量的定义和引用如下:
定义变量:
变量名 = 值
引用变量:
$(变量名)
-
模式规则(Pattern Rule):模式规则是一种简化规则书写的方法,它可以将相同的命令应用于多个目标。模式规则的格式如下:
%目标类型: %依赖类型 命令
-
自动变量(Automatic Variable):Makefile提供了一些自动变量,它们在规则中可以被自动替换为相应的值。常用的自动变量有:
- $@:表示目标文件
- $<:表示第一个依赖文件
- $^:表示所有依赖文件
-
注释(Comment):Makefile中的注释以井号(#)开头,直到行尾。
-
包含其他Makefile(Include):可以使用
include
指令将其他Makefile文件包含到当前Makefile中。include 文件名
-
条件语句(Conditional Statement):Makefile支持条件语句,可以根据不同的条件执行不同的操作。常用的条件语句有:
- ifeq:判断两个值是否相等
- ifneq:判断两个值是否不相等
- ifdef:判断变量是否定义
- ifndef:判断变量是否未定义
条件语句的格式如下:
ifeq (条件1, 条件2) 操作1 else 操作2 endif
这些是Makefile的基本语法,更多高级功能可以参考GNU Make的官方文档。