【发布时间】:2020-01-11 07:16:30
【问题描述】:
我有一个较长的 make 文件,它编译我的源代码文件的部分在这里
$(MAINFILE): $(BINDIR) $(OBJDIR) $(SCIPLIBFILE) $(LPILIBFILE) $(NLPILIBFILE) $(MAINOBJFILES)
$(LINKCXX) $(MAINOBJFILES) $(LINKCXXSCIPALL) $(LDFLAGS) -I$(GRBPATH)/mac64/include -L$(GRBPATH)/mac64/lib -lgurobi_c++ -lgurobi81 $(LINKCXX_o)$@
$(OBJDIR)/%.o: $(SRCDIR)/%.cpp
$(CXX) $(FLAGS) $(OFLAGS) $(BINOFLAGS) $(CXXFLAGS) -I$(GRBPATH)/mac64/include -c $< $(CXX_o)$@
仅当我清理所有内容然后从头开始编译时,头文件更改才会生效。我试过这个:
$(MAINFILE): $(BINDIR) $(OBJDIR) $(SCIPLIBFILE) $(LPILIBFILE) $(NLPILIBFILE) $(MAINOBJFILES)
$(LINKCXX) $(MAINOBJFILES) $(LINKCXXSCIPALL) $(LDFLAGS) -I$(GRBPATH)/mac64/include -L$(GRBPATH)/mac64/lib -lgurobi_c++ -lgurobi81 $(LINKCXX_o)$@
$(OBJDIR)/%.o: $(SRCDIR)/%.cpp (SRCDIR)/%.hpp (SRCDIR)/%.h
$(CXX) $(FLAGS) $(OFLAGS) $(BINOFLAGS) $(CXXFLAGS) -I$(GRBPATH)/mac64/include -c $< $(CXX_o)$@
但我得到了错误:
make: *** No rule to make target `obj/static/O.darwin.x86_64.gnu.opt/ColG_main.o
我对 makefile 有点陌生,我想知道我是否可以解决这个问题。
【问题讨论】:
-
虽然学习 make 可能是有益的,但我认为最好使用 cmake 或 meson 等工具进一步抽象您的构建过程。让它为你处理这些事情,因为你有比摆弄 make 更好的事情要做。此外,这可能是重复的:stackoverflow.com/questions/44020890/…