如果您是 Make 新手,您应该从简单的任务开始,逐步完成复杂的任务。
假设您有display1/disp1.cc
并且想要构建display1/disp1.o
. 您可以使用以下规则执行此操作Install/Makefile
:
display1/disp1.o: display1/disp1.cc
g++ -c display1/disp1.cc -o display1/disp1.o
在你继续之前让它完美地工作。然后你可以有几个这样的规则Install/Makefile
:
display1/disp1.o: display1/disp1.cc
g++ -c display1/disp1.cc -o display1/disp1.o
display1/foo1.o: display1/foo1.cc
g++ -c display1/foo1.cc -o display1/foo1.o
display1/foo2.o: display1/foo2.cc
g++ -c display1/foo2.cc -o display1/foo2.o
然后您可以使用自动变量来使规则更清晰:
display1/disp1.o: display1/disp1.cc
g++ -c $< -o $@
display1/foo1.o: display1/foo1.cc
g++ -c $< -o $@
display1/foo2.o: display1/foo2.cc
g++ -c $< -o $@
在你继续之前让它完美地工作。然后你可以用模式规则替换所有这些规则:
display1/%.o: display1/%.cc
g++ -c $< -o $@
让它工作......好吧,你明白了。然后您可以为其他目录编写更多模式规则:
display1/%.o: display1/%.cc
g++ -c $< -o $@
display2/%.o: display2/%.cc
g++ -c $< -o $@
ddv/%.o: ddv/%.cc
g++ -c $< -o $@
def/%.o: def/%.cc
g++ -c $< -o $@
然后还有四个覆盖java的模式规则(我可以尝试,但我不是javanaut。)
然后,您可以编写目标列表并将它们保存在各自的目录中,并使用include
指令将它们拉入Install/Makefile
.
您还可以做更多的事情,但这应该会让您忙一阵子。如果您遇到麻烦,请告诉我们。