Makefile之VPATH虚路径使用实例
在Makefile中,VPATH是一个特殊的变量,用于指定make命令在查依赖文件时的路径。它允许我们将源文件和依赖文件放在不同的目录中,从而更好地组织我们的项目结构。
使用VPATH的好处之一是可以将源文件和中间文件分开存放,这样可以避免在源文件目录中生成大量的中间文件,使项目结构更加清晰。下面是一个使用VPATH的简单示例:
```
VPATH = src:inc
CC = gcc
CFLAGS = -Iinc -Wall
SRCS = main.c foo.c bar.c
OBJS=$(SRCS:.c=.o)
TARGET = myprogram
$(TARGET):$(OBJS)
%.o:%.c
.PHONY: clean
clean:
rm -f $(OBJS) $(TARGET)
```
在上面的示例中,我们将源文件放在src目录中,头文件放在inc目录中。通过设置VPATH变量,我们告诉make命令在依赖文件时应该在这两个目录中查。
在规则中,我们使用了VPATH变量来指定依赖文件的路径。例如,$(OBJS)依赖于$(SRCS)中的所有源文件,我们使用了模式规则来将.c文件转换为.o文件,并在其中使用了VPATH变量。
通过这种方式,我们可以将源文件和依赖文件分开存放,提高代码的可维护性和可读性。同时,我们也可以在不同的目录中组织代码,使项目结构更加清晰。
除了指定单个目录外,我们还可以使用冒号分隔的多个目录,例如:
```
VPATH = src:lib:inc
```
这样,make命令将在src、lib和inc目录中依赖文件。
makefile phony
需要注意的是,VPATH只在依赖文件的中生效,而不会影响目标文件的生成路径。如果我们想要控制目标文件的生成路径,可以使用make的内置函数dir或notdir来进行处理。例如:
```
OBJS = $(addprefix obj/,$(notdir $(SRCS:.c=.o)))
```
上面的示例中,我们将目标文件存放在obj目录中,通过notdir函数获取文件名,再通过addprefix函数添加路径前缀。
总结来说,VPATH是一个非常有用的Makefile变量,可以帮助我们更好地组织项目结构,将源文件和依赖文件分开存放,并在make命令中指定路径。通过合理使用VPATH,我们可以提高代码的可维护性和可读性,使项目结构更加清晰。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。