多级目录makefile
时间: 2023-08-22 07:05:44 浏览: 87
在 Makefile 中创建多级目录是很常见的需求,可以通过使用递归规则和变量来实现。下面是一个示例,演示了如何在 Makefile 中创建多级目录:
```makefile
# 定义目录结构和文件列表
SRCDIR := src
OBJDIR := build
BINDIR := bin
SRCS := $(wildcard $(SRCDIR)/*.c)
OBJS := $(patsubst $(SRCDIR)/%.c,$(OBJDIR)/%.o,$(SRCS))
TARGET := $(BINDIR)/myprogram
# 默认目标
all: $(TARGET)
# 生成可执行文件
$(TARGET): $(OBJS)
@mkdir -p $(BINDIR)
$(CC) $^ -o $@
# 生成目标文件
$(OBJDIR)/%.o: $(SRCDIR)/%.c
@mkdir -p $(OBJDIR)
$(CC) -c $< -o $@
# 清理生成的文件
clean:
rm -rf $(OBJDIR) $(BINDIR)
```
在这个示例中,假设源代码文件位于 `src` 目录下,目标文件位于 `build` 目录下,可执行文件位于 `bin` 目录下。
Makefile 中的 `wildcard` 函数可以用来获取指定目录下的所有源代码文件。`patsubst` 函数用来将源文件列表转换为目标文件列表。通过这些变量,我们可以指定要编译的源文件和目标文件的位置。
在生成可执行文件的规则中,我们首先使用 `mkdir -p` 命令创建 `bin` 目录,然后将所有的目标文件链接为可执行文件。
在生成目标文件的规则中,我们也使用了 `mkdir -p` 命令创建 `build` 目录,然后编译每个源文件为对应的目标文件。
最后,通过定义 `clean` 规则可以清理生成的目标文件和可执行文件。
使用这个 Makefile,你可以在多级目录结构下编译和构建你的项目。只需要将源代码放在 `src` 目录下,然后运行 `make` 命令即可生成可执行文件。
阅读全文