C++ 如何给一个src源码文件夹逐个生成subdirectory.mk和makefile文件
时间: 2024-10-17 21:11:29 浏览: 47
在C++中,如果你需要为每个子目录(subdirectory)自动生成`Makefile`或`subdirectory.mk`(这通常是Linux Makefile系统中的做法),你可以使用一个脚本来遍历源码目录结构,并基于模板动态生成相应的Makefile。这里是一个基本步骤:
1. 创建一个主Makefile:这个Makefile通常会包含一个规则来递归地处理子目录。
```bash
# 主Makefile
.PHONY: all subdirectories clean
all:
@echo "Building for each subdirectory..."
$(MAKE) -C .subdirs
.subdirs:
# 使用find命令找到所有子目录
find src -type d -mindepth 1 | while read -r dir; do \
(cd $$dir && make); \
done
clean:
# 清理各个子目录
find src -type d -mindepth 1 -exec rm -rfv {}/build/* \;
```
2. 配置文件模板:假设你有一个名为`template.mk`的模板,它包含了你想要添加到每个子目录Makefile的基本配置。
```markdown
# template.mk
CC = g++
CFLAGS = -Wall -Wextra
SOURCES := $(wildcard *.cpp)
OBJECTS := $(SOURCES:.cpp=.o)
default: $(OBJECTS)
$(CC) $(CFLAGS) -o main $^
%.o: %.cpp
$(CC) -c $(CFLAGS) -o $@ $<
```
3. 运行`make`:当你运行`make`时,它将按照主Makefile的规则去处理每个子目录。
注意,这是一个简化的示例,实际操作可能会更复杂,例如处理依赖、版本控制等。你需要根据你的项目需求调整上述脚本。此外,有些现代的构建工具如CMake也支持类似的功能,不过这里展示的是传统的Makefile方法。
阅读全文