【发布时间】:2020-05-05 05:29:33
【问题描述】:
我在这里看到的每个问题都涉及比我更复杂的用例。
我正在上一年级的编程课程,但我无法理解我做错了什么。运行 make 时,我只收到一条 Circles is up to date 消息。
我有三个文件:
main.cpp => 程序的入口点
CircleDriver.cpp => 一个实现文件
circle.h => 包含头文件类的头文件。
main.cpp 依赖于 CircleDriver.cpp 和 circle.h,CircleDriver.cpp 依赖于 circle.h
目前我的 Makefile 看起来像这样:
Circles: main.o
g++ -std=c++11 -g -Wall main.o -o Circles
main.o: main.cpp
g++ -std=c++11 -g -Wall -c main.cpp CircleDriver.cpp
clean:
rm *.o Circles
我读到您不需要在编译命令中包含头文件,但添加其他 .cpp 文件并没有解决我的问题。
我确信这是一个简单的问题,但是大约 30 分钟的谷歌搜索没有产生任何结果。
提前谢谢你。
【问题讨论】:
-
看起来你需要一个额外的规则(但更喜欢一个更通用的规则来代替
main.o: main.cpp)来处理CircleDriver。也许g++ -std=c++11 -g -Wall -c main.cpp CircleDriver.cpp会用它做点什么,但我从未尝试过(或几十年前尝试过),所以我不知道会发生什么(或忘记了什么)。 -
您的规则说
main.o仅依赖于main.cpp,但事实并非如此,因为它也使用CircleDriver.cpp。另外,我猜你可能需要一些头文件来更新你的规则。