我做一个make文件没什么问题,这是代码:
SHELL = /bin/sh
CC := gcc
CFLAGS := -Wall
VPATH = src:obj
HEADERS := parser.h
dirs = out obj
%.o : mkdirs %.c $(HEADERS)
$(CC) -c $(word 2,$^) -o obj/$@
all : parser.o
ar cr out/libsip.a $<
clean :
rm -f -r $(dirs)
mkdirs :
mkdir -p $(dirs)当我尝试执行make时,我得到了这个错误:
mkdir -p out obj
gcc -c src/parser.c -o obj/parser.o
ar cr out/libsip.a parser.o
file parser.o not found我不明白为什么parser.o没有替换为正确的路径,我使用了自动变量
发布于 2015-01-24 02:20:39
%.o : mkdirs %.c $(HEADERS)
$(CC) -c $(word 2,$^) -o obj/$@
all : parser.o
ar cr out/libsip.a $<您告诉make在当前目录中创建一个parser.o文件。
然后,您的%.o规则将在obj目录而不是当前目录中创建该文件。
这样ar命令就找不到它了。
VPATH用于查找先决条件。如果obj/parser.o已经存在,那么make会为我相信的all目标找到它。
参见How Not to Use VPATH。
https://stackoverflow.com/questions/28116125
复制相似问题