我有四个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模板。