makefile中%.o 和%.cpp的作用
时间: 2024-04-10 18:33:55 浏览: 138
makefile中文手册.zip
在 Makefile 中,`%.o` 和 `%.cpp` 是通配符模式(Wildcard Pattern)。它们可以用于匹配多个文件名,并在规则中使用。
- `%.cpp`:表示匹配以 `.cpp` 结尾的任意文件名。例如,`main.cpp`、`utils.cpp` 等。
- `%.o`:表示匹配以 `.o` 结尾的任意文件名。例如,`main.o`、`utils.o` 等。
这些通配符模式常用于编译源代码文件时的规则定义。下面是一个示例:
```makefile
objects = main.o utils.o
all: program
program: $(objects)
g++ -o program $(objects)
%.o: %.cpp
g++ -c $< -o $@
```
在这个示例中,`objects` 变量包含了要编译的目标文件列表。`all` 目标依赖于 `program` 目标,而 `program` 目标又依赖于 `$(objects)` 中的目标文件。
规则 `%.o: %.cpp` 表示将以 `.cpp` 结尾的源代码文件编译为以 `.o` 结尾的目标文件。其中,`$<` 代表规则中的第一个依赖文件(即源代码文件),`$@` 代表规则中的目标文件(即目标文件名)。通过这样的规则定义,可以自动地根据源代码文件生成对应的目标文件。
使用通配符模式可以简化 Makefile 的书写,特别适用于大型项目中有多个源代码文件需要编译的情况。它可以自动匹配文件名,减少了手动编写每个文件的规则的工作量。
阅读全文