Makefile自动生成依赖不起作用

时间:2015-03-24 04:00:08

标签: c++ c++11 makefile dependencies

我有四个cpp文件和很多.h个文件。我希望我的make文件为每个.d文件生成相应的.cpp文件,并将它们编译为.o,然后链接它们。有人可以告诉我这段代码有什么问题吗?它不会以它应该的方式工作。

顺便说一句,我是makefile的初学者!请不要与高度专家的硬解释链接到某个地方。

  

$ make

     

g ++ -c -g -Wall -Wconversion -Wfatal-errors -Wextra -std = c ++ 11 -MD -MP -MF ./bin/obj/app/sim_rhs.d -o bin / obj / app / sim_rhs.o app / sim_rhs.cpp

     

app / sim_rhs.cpp:49:1:致命错误:打开依赖文件./bin/obj/app/sim_rhs.d:没有这样的文件或目录

     

}

     

^

     

编译终止。

     

make:*** [bin / obj / app / sim_rhs.o]错误1

Cpp文件:

main.cpp
app/sim_rhs.cpp
app/sim_mids.cpp
app/sim_outputs.cpp

生成文件

SOURCES := main.cpp  app/sim_rhs.cpp app/sim_mids.cpp app/sim_outputs.cpp
OUTDIR:= ./out
BINDIR:= ./bin
OBJDIR:= ./bin/obj
OBJECTS := $(addprefix $(OBJDIR)/,$(SOURCES:.cpp=.o))
DEPFILES:= $(OBJECTS:.o=.d)

CXX := g++
CXXFLAGS := -c -g -Wall -Wconversion -Wfatal-errors -Wextra -std=c++11 -MD -MP

LIBS:= -lboost_filesystem -lboost_system 

# default
%:: $(BINDIR)/sim

# Link the executable
$(BINDIR)/sim: $(OBJECTS)
    $(CXX) $(LDFLAGS) $^ -o $@ $(LIBS)

run:
    $(BINDIR)/sim

$(OBJDIR)/%.o: %.cpp
    $(CXX) $(CXXFLAGS) -MF $(OBJDIR)/$*.d -o $@  $<

-include $(DEPFILES)

由于我有现有代码,请避免重复建议。我不想要任何其他人的makefile模板。

0 个答案:

没有答案