【问题标题】:java makefile is making .class files instead of make filejava makefile 正在制作 .class 文件而不是 make 文件
【发布时间】:2015-11-09 14:12:44
【问题描述】:

使用 cygwin 从一个名为 memsim.java 的 java 文件中创建一个 make 文件。 makefile 名为 makefile.txt,其内容为

JFLAGS = -g
JC = javac
.SUFFIXES: .java .class
.java.class:
    $(JC) $(JFLAGS) $*.java

CLASSES = \
    Memsim.java

default: classes

classes: $(CLASSES:.java=.class)

clean:
    $(RM) *.class

我的命令是

make -f makefile.txt

但是我没有得到一个“make”文件。相反,它为每个名为 (file).class 的类创建一个文件(文件是类名)。

使用 jdk1.7.0_51 中的 javac。

编辑:我所要求的只是如何编写一个文件,该文件将生成一个名为“make”的文件,该文件将编译和运行文件 Memsim.java。任何关于我在哪里可以找到答案的信息或链接都会很棒。

【问题讨论】:

  • not getting a single "make" file 是什么意思?如果您调用make,它将执行make 文件中定义的步骤。在您的情况下makefile.txt,正如您使用选项-f 指定的那样。
  • 好的,我明白了,这是我的第一个 java makefile,所以我猜这个教程有误导性。你知道我必须在 makefile 中进行哪些更改才能获得一个运行 Memsim.java 的 make 文件吗?或者你知道我在哪里可以找到方法吗?我到处都用谷歌搜索过
  • 为什么你不使用,例如:maven,你的项目?使用make有什么限制?
  • 暂且不说Java,你明白make的目的吗?然后正如 SubOptimal 指出的那样,有类似的 Java 式解决方案,例如 Ant、Maven 或 Gradle,可能更适合您。
  • 这个makefile告诉make为CLASSES变量中的每个.java文件创建一个.class文件。如果你想要更多,那么你还需要告诉 make 这些步骤。

标签: java class makefile


【解决方案1】:

您可以在http://www.cs.swarthmore.edu/~newhall/unixhelp/javamakefiles.html 中找到您的makefile.txt 中的命令的完整说明。

如果将makefile.txt 重命名为Makefile,则可以将Memsim.javamake 一起编译(无需指定-f makefile.txt

如果您将以下内容添加到您的 makefile。 (注意java前面的单个TAB而不是空格)

exec:
    java Memsim

您可以使用make exec 执行Memsim 类。

使用make clean,您将删除Memsim.class 文件。

【讨论】:

    最近更新 更多