首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >学习makefile

学习makefile
EN

Stack Overflow用户
提问于 2014-02-12 13:19:02
回答 1查看 534关注 0票数 1

我正在尝试学习makefile。我必须为我的Unix管理/编程类做一个作业,其中包括为三个文件创建makefile : savings.h、savings.cpp和savingsTest.cpp。我的老师并没有给我们太多关于makefile的解释。我看了我的书,我理解了大意,但我在语法上遇到了问题。我遵循了我的书中的例子,但我得到了一个错误。到目前为止,我的makefile代码如下:

代码语言:javascript
复制
 savingsTest.0:  savingsTest.cpp savings.cpp savings.h
                 cc -c savingsTest.cpp

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

这是我得到的错误:

代码语言:javascript
复制
  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

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

EN

回答 1

Stack Overflow用户

发布于 2014-02-12 13:40:37

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

您的程序savingsTest.0依赖于两个对象文件:savings.osavingsTest.osavings.o文件依赖于savings.cppsavings.hsavingsTest.o文件依赖于savingsTest.cppsavings.h

这都是这样写的:

代码语言:javascript
复制
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的简写)。有理由使用它-值得注意的是,不要重复自己。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21719299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档