【发布时间】:2018-06-19 12:03:35
【问题描述】:
我的 Makefile 中的依赖项有问题。 编译没有问题,可以完美编译好的*.cc和*.hh,可惜没有重新编译依赖,所以可执行文件没有更新。
这是我的生成文件:
EXEC ?= program
SRCS = $(shell find -name *.cc)
DEP = $(SRCS:.cc=.d)
OBJDIR = objs
OBJS = $(SRCS:./%.cc=$(OBJDIR)/%.o)
CXX = g++
CFLAGS = -std=c++14 $(addprefix "-I", $(shell find -type d))
## Clean rule
.PHONY: clean
clean:
rm -rf $(OBJDIR)
rm -f $(EXEC)
$(EXEC) : $(OBJS)
@echo "Linking: $@"
$(CXX) $(OBJS) -o $@
-include $(DEP)
$(OBJDIR)/%.o : ./%.cc ./%.hh
@mkdir -p $(@D)
@echo "Compiling: $<"
@$(CXX) -c $(CFLAGS) -MT $@ -MMD -MP -o $@ $<
这可能与g++ 使用的标志有关,但我无法找到解决方案;
提前感谢您在此问题上提供的帮助,
【问题讨论】:
-
你有
DEP作为CSRC的函数——我想它实际上应该是SRCS? -
是的,对不起。我只是简化了实际的 Makefile,我忘了编辑这一行。
标签: c++ makefile compilation dependencies