编辑:基本上,我试图做的事情与键入"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)
对于没有很多文件或依赖项的简单项目,我只使用脚本。
构建:
javac -cp .;* *.java
Run Code Online (Sandbox Code Playgroud)
跑步:
java -cp .;* SomeMainClass
Run Code Online (Sandbox Code Playgroud)
替换.
为您的源所需的任何路径。* 将使用默认路径上的任何 jar 或使用不同的路径,如lib/*
.
如果您有如下所示的简单目录布局,
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)
使用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完成后运行.
归档时间: |
|
查看次数: |
18880 次 |
最近记录: |