Makefile 如何用类似for 循环
时间: 2024-09-09 22:12:39 浏览: 68
Makefile进阶 Makefile进阶
Makefile 是一种基于规则的自动化构建工具,用于管理和协调软件项目的构建过程。在 Makefile 中,虽然没有直接像 C 或其他编程语言那样的 for 循环语法,但是你可以通过一些间接的方式来模拟这种循环结构。以下是几种常见的实现方式:
1. 使用通配符 (wildcard) 和 `$(foreach)`:你可以结合 wildcard 用于匹配一组文件,并通过 `$(foreach)` 进行迭代处理,例如批量编译源文件。
```makefile
SOURCES = src/*.cpp
EXECUTABLE = my_program
%.o: %.cpp
g++ -c $< -o $@
all: $(EXECUTABLE)
$(EXECUTABLE): $(SOURCES)
$(foreach src, $(SOURCES), g++ -o $(EXECUTABLE) $(src);)
```
2. 使用递归函数 (`$(eval)`): 创建一个递归函数来处理循环,但这需要一定的技巧和对 Makefile 语法的深入理解。
```makefile
define COMPILE_SRC
g++ -c src/\$*.cpp -o obj/\$*.o
endef
.SUFFIXES:
.SUFFIXES: .cpp .o
all: my_program
my_program: obj/%.o
g++ -o $@ $^
obj/%.o: %.cpp
$(eval $(COMPILE_SRC))
```
阅读全文