首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >“'nothing to to for”.PHONY规则错误

“'nothing to to for”.PHONY规则错误
EN

Stack Overflow用户
提问于 2019-05-19 22:38:23
回答 1查看 511关注 0票数 0

我有一个通配符规则来抓取目录中的所有文件作为测试并运行它们,还有一个.PHONY规则来确保我可以运行所有的测试,而不管它们以前是否已经运行过。当我运行make tests/PA5obj.javamake test时,它返回‘`make: Nothing to be to 'test’。

有时,在我将新文件添加到tests/目录后,我必须运行make clean,然后它才会在make test中提取它们,所以我不确定是否存在缓存问题或其他问题,但这不能解释为什么make test也不能工作。

以下是makefile的相关部分:

PROG = Test
TESTS = $(wildcard tests/*.java)

.SUFFIXES: .java.class

#-------------------------
JCC = javac
JAR = jar
#-------------------------

all: $(PROG).jar

.PHONY:test $(TESTS)
test: $(TESTS)

tests/%.java: $(PROG).jar
    @echo "#### testing $@ ####"
    @java -jar $(PROG).jar $@
    @echo "> Passed"

$(PROG).jar: Main.class
    $(JAR) cmf $(PROG)MainClass.txt $(PROG).jar $^

Main.class: Main.java
    javac $^

必要的文件包括:

TestMainClass.txt

Main-Class: Main

和Main.java

import java.util.Scanner;
import java.lang.System;
import java.io.File;
import java.io.FileNotFoundException;

class Main {
  public static void main(String args[]) {
    if (args.length < 1) {
      throw new RuntimeException("Usage: Main <filename> ");
    }
    String filename = args[args.length-1];
    try {
      Scanner sc = new Scanner(new File(filename));
      System.out.println("Contents of file: " + filename);
      while (sc.hasNext()) {
        System.out.println(sc.nextLine());
      }
    }
    catch (FileNotFoundException e) {
      System.out.println(e);
      System.exit(1);
    }
  }
}

运行make test应该只读取test目录中的所有文件(作为最小示例)

EN

回答 1

Stack Overflow用户

发布于 2020-12-06 08:03:12

您没有任何依赖于测试目标的目标。由于测试目标依赖于jar目标,因此您可以将all目标更改为依赖于测试目标,而不是jar目标。

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

https://stackoverflow.com/questions/56208840

复制
相关文章

相似问题

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