makefile不同目录下的文件
时间: 2023-08-04 17:08:34 浏览: 23
在Makefile中,可以使用相对路径或绝对路径来指定不同目录下的文件。
假设有以下目录结构:
```
project/
├── Makefile
├── src/
│ ├── main.c
│ ├── module1.c
│ └── module1.h
└── obj/
```
在Makefile中,可以使用以下方式来指定不同目录下的文件:
1. 使用相对路径:
```makefile
CC = gcc
CFLAGS = -Wall
OBJDIR = obj
$(OBJDIR)/%.o: src/%.c
$(CC) $(CFLAGS) -c $< -o $@
main: $(OBJDIR)/main.o $(OBJDIR)/module1.o
$(CC) $(CFLAGS) $^ -o $@
```
在上面的示例中,`$(OBJDIR)/%.o`表示目标文件所在的路径,`src/%.c`表示源文件所在的路径。使用`$<`表示依赖中的第一个文件,使用`$@`表示目标文件。
2. 使用绝对路径:
```makefile
CC = gcc
CFLAGS = -Wall
SRCDIR = /path/to/src
OBJDIR = /path/to/obj
$(OBJDIR)/%.o: $(SRCDIR)/%.c
$(CC) $(CFLAGS) -c $< -o $@
main: $(OBJDIR)/main.o $(OBJDIR)/module1.o
$(CC) $(CFLAGS) $^ -o $@
```
在上面的示例中,`$(SRCDIR)/%.c`表示源文件所在的绝对路径,`$(OBJDIR)/%.o`表示目标文件所在的绝对路径。