学习makefile

我正在努力学习makefile。 我必须为我的Unix管理/编程类做一个任务,包括为三个文件创建一个makefile:savings.h savings.cpp和savingsTest.cpp。 我的老师并没有真正向我们解释有关makefile的问题。 我查看了我的书,我理解了一般的想法,但我的语法有问题。 我按照我的书的例子,但是我得到了一个错误。 这是我目前为止的makefile代码:

savingsTest.0: savingsTest.cpp savings.cpp savings.h cc -c savingsTest.cpp savings.o: savings.cpp savings.h cc -c savings.cpp 

这是我得到的错误:

  cc -c savingsTest.cpp cc: No input file specified, no output generated *** Error code 1 make: Fatal error: Command failed for target `savingsTest' v245-2% emacs makefile.txt 

有人可以帮我理解语法,这样我就可以确定我做错了什么。 感谢任何回应帮助的人。

您需要整理C ++编译器的名称。 我将假设它是CC ,但还有很多其他名称( g++ )。

您的savingsTest.0程序取决于两个目标文件: savingsTest.osavingsTest.osavings.o文件取决于savings.cppsavings.hsavingsTest.o文件取决于savingsTest.cppsavingsTest.cpp

这些都写成:

 savingsTest.0: savings.o savingsTest.o CC -o $@ savings.o savingsTest.o savingsTest.o: savingsTest.cpp savings.h CC -c savingsTest.cpp savings.o: savings.cpp savings.h CC -c savings.cpp 

你可能会遗漏最后两个命令行; make知道如何将.cpp编译为.o

您将学习在makefile使用宏。 $@是正在构建的程序或文件的名称(因此它是savingsTest.0的简写)。 有理由使用它 – 值得注意的是,不要重复自己。

您通常应该将宏用于命令和命令参数,库以及文件列表。