makefile出问题了

l369294289 2017-04-06 08:26:00

BIN_DIR = obj
SRCS = test.c
OBJECTS = $(addprefix $(BIN_DIR)/,$(patsubst %.c, %.o, $(SRCS)))

test.out : $(OBJECTS)
gcc -o $@ $<
#VPATH = obj
sinclude $(OBJECTS:.o=.d)

$(BIN_DIR)/%.d : %.c
$(shell if [ -n "$(BIN_DIR)" -a ! -e "$(BIN_DIR)" ];then mkdir -p $(BIN_DIR); fi)
@set -e; rm -f $@; \
gcc -MM $< > $@.$$$$; \
sed 's,\($(notdir $*)\.o\)[: ]*,$(BIN_DIR)\/$*\.o $(BIN_DIR)\/$*\.d : ,' < $@.$$$$ > $@; \
cat $@; \
$(RM) $@.$$$$


clean:
rm *.o *.out *.d -rf obj/

debug:
@echo $(OBJECTS)
@echo $(SRCS)
@echo $(BIN_DIR)


在同一目录下有test.h,test.c和Makefile,Makefile的内容如上,make后的结果如下:
[liupengfei@pier-server1 test]$ make
obj/test.o obj/test.d : test.c test.h
gcc -o test.out obj/test.o
gcc: error: obj/test.o: 没有那个文件或目录
gcc: fatal error: no input files
compilation terminated.
make: *** [test.out] 错误 4

为什么.d文件生成的依赖关系用不了?!!!
...全文
131 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

1,318

社区成员

发帖
与我相关
我的任务
社区描述
主要是开发驱动技术
社区管理员
  • 驱动程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧