Makefile:VPATH 变量可以应用于分配 Makefile 变量吗?
Makefile: Can VPATH variable is applied to assigning Makefile variable?
我尝试编写简单的 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
我将 current/src 目录指定为 VPATH 以进行查找
当前目录中的所有 *.c 文件和 current/srcs 但
在 /srcs 目录中找不到 *.c 文件。
可能是 make 在 Makefile 中定义变量时不能使用 VPATH
对吧?如果正确,请告诉我更好的方法:)
谢谢。
VPATH
用于目录 make 应该搜索以找到先决条件。
它不会改变 $(wildcard)
搜索的位置。
VPATH
允许您在规则的先决条件列表中使用 foo.c
(显式或隐式),并在当前目录和文件的 VPATH
目录中查看为此。
如果您希望 SRCS
包含 srcs
目录中的 .c
文件,那么您需要在额外的 $(wildcard)
调用中包含 srcs/*.c
SRCS
作业。
SRCS = $(wildcard *.c) $(wildcard srcs/*.c)
我尝试编写简单的 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
我将 current/src 目录指定为 VPATH 以进行查找
当前目录中的所有 *.c 文件和 current/srcs 但
在 /srcs 目录中找不到 *.c 文件。
可能是 make 在 Makefile 中定义变量时不能使用 VPATH
对吧?如果正确,请告诉我更好的方法:)
谢谢。
VPATH
用于目录 make 应该搜索以找到先决条件。
它不会改变 $(wildcard)
搜索的位置。
VPATH
允许您在规则的先决条件列表中使用 foo.c
(显式或隐式),并在当前目录和文件的 VPATH
目录中查看为此。
如果您希望 SRCS
包含 srcs
目录中的 .c
文件,那么您需要在额外的 $(wildcard)
调用中包含 srcs/*.c
SRCS
作业。
SRCS = $(wildcard *.c) $(wildcard srcs/*.c)