制作Java Makefile

Dud*_*ude 5 java makefile

编辑:基本上,我试图做的事情与键入"javac sim.java"然后"java sim(commands)"相同.有没有办法用makefile替换它?

所以我在网上看了很多例子并尝试将它们修改为我需要的,但没有任何效果.我需要一个makefile,这样我的老师就可以通过在终端输入"make"来创建我的项目(由于某种原因,这是项目的要求).我的最终目标是能够输入"sim",然后输入我的代码定义的所需命令.代码在eclipse中运行,但我无法在终端中使用这些命令运行它.它将生成文件,但当我尝试在终端中键入"sim ....(arguments)"时,它会显示"sim:command not found".我确定这是一个愚蠢的问题,但我们在学校没有学到这一点,而且我没有使用Makefile的经验.

下面是我的makefile.

JFLAGS = -g
JC = javac
OPT = -O3
#OPT = -g
WARN = -Wall

sim: sim.class

sim.class: sim.java
    $(JC) $(JFLAGS) sim.java

clean:
    $(RM) sim.class

clobber:
    $(RM) sim.class
Run Code Online (Sandbox Code Playgroud)

Jef*_*ler 7

对于没有很多文件或依赖项的简单项目,我只使用脚本。

构建:

javac -cp .;* *.java
Run Code Online (Sandbox Code Playgroud)

跑步:

java -cp .;* SomeMainClass
Run Code Online (Sandbox Code Playgroud)

替换.为您的源所需的任何路径。* 将使用默认路径上的任何 jar 或使用不同的路径,如lib/*.


Aro*_*ron 7

如果您有如下所示的简单目录布局,

root/
    src/
        ExampleClass.java
        AnotherClass.java
    out/
makefile
Run Code Online (Sandbox Code Playgroud)

你可以makefile像这样创建你的:

root/
    src/
        ExampleClass.java
        AnotherClass.java
    out/
makefile
Run Code Online (Sandbox Code Playgroud)


bma*_*ies 5

使用make with java可以是一个练习用锤子驱动螺丝,只要你有一个以上的课程.

使用java代码将使用包.因此,您将拥有一个复杂的目录树,它反映了您的包结构,其中包含.java源文件.写作制定"看到"所有这些文件的规则很痛苦.

您应该同时在所有源文件上调用javac以获得正确的结果.因此,"运行一个命令将一个源文件转换为一个编译文件"的常用make模式不能很好地工作.

但是,您现在的主要问题似乎是您希望java生成可执行文件; 一个名为'sim'的文件.不,不会以任何简单的方式发生.java编译器生成.class文件; 它们的整个树,用于源文件.您可以直接从它们运行,也可以将它们打包到JAR文件中.

为了获得一个看似简单的命令行可执行文件的东西,你需要使用一个更复杂的工具,用前面的脚本包装所有这些.

现在,您只需要:

java -cp . NAME_OF_THE_CLASS_IN_sim.java
Run Code Online (Sandbox Code Playgroud)

在makefile完成后运行.