我有一个可以用任何语言完成的项目。我用Java编写了项目。对于提交,教授要求提供源代码的tar和makefile。从我一直在阅读的内容来看,似乎没有必要为Java程序创建makefile。我也了解仍然可以创建一个makefile。我试图查看一些用于创建Makefile的示例,但是遇到了一些问题。如果要绕过Makefile,我需要在提交中包括哪些文件?我最好的猜测是包含.class文件或.xml(Ant项目,我在NetBeans中工作)。另外,我是否需要在makefile中包含其他内容?
编辑:我试图创建一个makefile看起来像这样:
JFLAGS = -g
JC = javac
#
.SUFFIXES: .java .class
.java.class:
$(JC) $(JFLAGS) $*.java
CLASSES = \
QuickSort.java \
default: classes
classes: $(CLASSES:.java=.class)
clean:
$(RM) *.class
它的实际文件名是Makefile.mak。我尝试了几种不同的方式来运行它。当我在MinGW中键入make时,我得到" make:***没有指定目标,也没有找到makefile。停止。"我也尝试只输入Makefile.mak。这会产生一长串找不到的命令。
如果教授想要一个生成文件,不提供一个生成文件似乎不是一个成功的策略。 我建议您编写一个makefile。
我的一位同学正在用python编写程序,并询问他是否需要makefile,因为python不需要makefile。 老师的回答是,尽管仍然可以制作一个,但他确实不需要一个。 我的理解是NetBeans在某种程度上为我创建了一个makefile。
我在这里找到了很好的参考资料,并提供了大量信息:stackoverflow.com/questions/2209827/
您可以使其变得更简单,(请注意,命令之前带有以下强制性选项卡)
QuickSort.class: QuickSort.java
javac -g QuickSort.java
clean:
rm -f QuickSort.class
我最初收到的是找不到javac命令的错误。我通过编辑环境变量来解决该问题。我仍然收到clean ::命令,找不到QuickSort.class ::命令。我将如何解决这些错误?
以上是makefile语法。将其放置在名为Makefile的文件中。默认目标是第一个QuickSort.class(取决于QuickSort.java)。
看来我明白了。抱歉,在尝试按照说明进行操作时,我可能变得有点笨拙,但我非常感谢您的帮助。
因此,仅提交为我的makefile生成的QuickSort.class会正确吗?
否。创建Makefile和Java源文件(tar cf MyProject.tar Makefile QuickSort.java)的tar文件。您可以包括QuickSort.class,但是我相信练习的重点是您的教授打算构建并运行它。
抱歉,这就是我要问的。要澄清的是,当他说在tar中包含makefile时,在这种情况下,make文件是QuickSort.class吗?
否。其文件为Makefile(命令make使用名为Makefile的make文件)。您还需要源文件。参见我的示例tar命令。它在MyProject.tar中包含Makefile和QuickSort.java,(我相信)这是您被要求执行的操作。