1

我正在编写一个名为“警报中心”的小程序,我使用的主要类/对象是:点、线和建筑。我的 Makefile 的内容是:

building.o: building.h line.h point.h building.cpp
    g++ -c building.cpp
line.o: line.h point.h line.cpp
    g++ -c line.cpp
point.o: point.h point.cpp
    g++ -c point.cpp
alert_center: point.o line.o building.o
    g++ point.o line.o building.o runner.cpp -o alert_center

问题是它只考虑列出的第一个文件。例如,如果我更改line.cpp,然后运行make​​,什么都不会发生,它会说building.o没有改变。line.o只有当我为第一个规则制定规则时,才会编译更改。有谁知道为什么会这样?

4

1 回答 1

4

alert_center设置默认目标。您可以使用.default(请参阅this)显式执行此操作,或者简单地将其列为第一个目标以使其成为默认目标。

在多个目标的情况下,通常会命名一个伪目标all并将其设为默认目标。请参阅此处的 make 推荐目标。

于 2013-06-29T00:33:56.623 回答