学习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.o
和savingsTest.o
。 savings.o
文件取决于savings.cpp
和savings.h
。 savingsTest.o
文件取决于savingsTest.cpp
和savingsTest.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
的简写)。 有理由使用它 – 值得注意的是,不要重复自己。
您通常应该将宏用于命令和命令参数,库以及文件列表。