make clean的时候怎么可以把某个目录排除么
时间: 2024-09-25 22:02:58 浏览: 33
linux makefile 工程目录下,所有c文件
在Makefile中,如果你想要在`make clean`命令时排除特定目录,可以使用通配符或者在清理规则里明确指定不删除的文件夹。这里有几个方法:
1. 使用`-f`或`--no-target`选项:你可以创建一个特殊的规则,比如`%.dir`,然后标记它为不删除的。例如:
```
clean:
-$(RM) $(wildcard *.o)
-@echo "Skipping directory example_dir"
# 或者更具体的
-@echo "Keeping example_dir intact" && ! [ -d example_dir ] || true
```
2. 使用通配符和条件表达式:如果知道你想保留的目录名字,可以编写一个不包含该目录的清理列表。例如:
```
%.o: ; $(MAKE) -C $(dir $@) $(notdir $@)
clean:
-$(RM) $(filter-out example_dir/%.o, *.o)
```
这会删除所有.o文件,除了example_dir下的.o文件。
3. 使用shell命令:如果你的Makefile支持,可以在clean任务中添加一个shell命令来跳过清理操作,例如:
```bash
clean:
find . -name "*.o" -not -path "./example_dir/*" -delete
```
这将查找并删除除example_dir以外的所有.o文件。
阅读全文