Makefile:是否可以应用VPATH变量来分配Makefile变量?
我试着编写简单的makefile以供练习 我有两个目录1。srcs(.c),2.include(.h) 并尝试定义包含所有.c文件的SRCS变量 在当前目录和srcs目录中 下面是我的MakefileMakefile:是否可以应用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:
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)