【发布时间】:2016-04-24 03:34:30
【问题描述】:
#define the suffixes
.SUFFIXES: .java .class
#compile all java files to .class
.java.class:
javac -g *.java
#CounterStatTester is a tester class for CounterStat
CounterStatTester.class: CounterStat.class
test: CounterStatTester.class CounterStat.class
java CounterStatTester
当我尝试“进行测试”时,shell 显示“make: *** No rule to make target `test'。停止。” 但是我写了“java CounterStatTester”,为什么还是找不到规则?
【问题讨论】:
-
Makefile 可能很麻烦,因为它们希望在最后一行出现尾随换行符,并且还需要制表符,而不是缩进的空格。
-
@AndrewWilliamson 我确实在每个 tule 行之前添加了制表符。基本上,我的代码有问题吗?
-
代码对我来说看起来不错 - 尝试此操作时是否有可用的文件
CounterStat.class? -
只有 java 文件。为什么我在尝试这个时需要 .class? makefile 的目的是正确编译它们,不是吗?
-
test规则取决于 CounterStat.class。如果没有具有该名称的文件,它将查找具有该名称的规则。如果也没有具有该名称的规则,则无法解析依赖关系,因此无法运行test规则。