学习makefile

时间:2014-02-12 05:19:02

标签: c syntax 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

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

1 个答案:

答案 0 :(得分:1)

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

您的计划savingsTest.0取决于两个目标文件:savings.osavingsTest.osavings.o文件取决于savings.cppsavings.hsavingsTest.o文件取决于savingsTest.cppsavings.h

这些都写成:

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的简写)。有理由使用它 - 特别是,不要重复自己。

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