Makefile:是否可以应用VPATH变量来分配Makefile变量?

Makefile:是否可以应用VPATH变量来分配Makefile变量?,makefile,gnu-make,vpath,Makefile,Gnu Make,Vpath,我试着编写简单的makefile以供练习 我有两个目录1。srcs(.c),2.include(.h) 并尝试定义包含所有.c文件的SRCS变量 在当前目录和srcs目录中 下面是我的Makefile CURDIR = $(shell pwd) OBJDIR = $(CURDIR)/objdir VPATH = $(CURDIR)/srcs SRCS = $(wildcard *.c) OBJS = $(patsubst %.c, %.o, $(SRCS)) all: main main:

我试着编写简单的makefile以供练习

我有两个目录1。srcs(.c),2.include(.h)

并尝试定义包含所有.c文件的SRCS变量

在当前目录和srcs目录中

下面是我的Makefile

CURDIR = $(shell pwd)
OBJDIR = $(CURDIR)/objdir
VPATH = $(CURDIR)/srcs
SRCS = $(wildcard *.c)
OBJS = $(patsubst %.c, %.o, $(SRCS))

all: main

main: $(OBJS)
        gcc -o $@ $^

$(OBJS): $(SRCS) | $(OBJDIR)
        gcc -c -o $@ $<

$(OBJDIR): 
        mkdir objdir
CURDIR=$(外壳pwd)
OBJDIR=$(CURDIR)/OBJDIR
VPATH=$(CURDIR)/srcs
SRCS=$(通配符*.c)
OBJS=$(patsubst%.c、%.o、$(SRCS))
全部:主要
main:$(OBJS)
gcc-o$@$^
$(OBJS):$(SRCS)|$(OBJDIR)
gcc-c-o$@$<
$(OBJDIR):
mkdir objdir
我将当前/src目录指定为VPATH以进行查找

当前目录和当前/srcs中的所有*.c文件,但

在/srcs目录中找不到*.c文件

在Makefile中定义变量时,可能是make不能使用VPATH

对吧??如果正确,请让我知道更好的方法:)


谢谢

VPATH
用于目录make-should-search以查找先决条件

它不会更改
$(通配符)
搜索的位置

VPATH
允许您在规则的先决条件列表中使用
foo.c
(显式或隐式),并在当前目录和
VPATH
目录中查找该规则的文件

如果希望
SRCS
包含
SRCS
目录中的
.c
文件,则需要在
SRCS
分配中的另一个
$(通配符)
调用中包含
SRCS/*.c

SRCS = $(wildcard *.c) $(wildcard srcs/*.c)