我正在尝试学习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有没有人可以帮我理解语法,这样我就可以确定我做错了什么。感谢任何响应帮助的人。
发布于 2014-02-12 13:40:37
您需要整理出您的C++编译器的名称。我假设它是CC,但还有很多其他名称(例如g++)。
您的程序savingsTest.0依赖于两个对象文件:savings.o和savingsTest.o。savings.o文件依赖于savings.cpp和savings.h。savingsTest.o文件依赖于savingsTest.cpp和savings.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的简写)。有理由使用它-值得注意的是,不要重复自己。
通常,您应该将宏用于命令和命令参数、库和文件列表。
https://stackoverflow.com/questions/21719299
复制相似问题