大家
老实说,我对makefile并不是很了解...在我的任务中,描述是我们必须为GNU make开发一个Makefile来构建我们的程序。例如,命令行
make
mipsim -v < test1.cmd > test1.log
将构建ISS(我们制作的MIPS模拟器),然后使用调试输出(因为“-v”)运行它,从文件test1.cmd获取输入命令并将结果写入test1.log。
我的程序必须将-v,test1.cmd和test1.log作为三个参数读取到main函数中的String [] args。我不知道如何实现它......
我已完成该计划,但我不知道如何使上述事情发生。到目前为止我所知道的可能是创建一个调用java程序的包装器shell脚本......
我还检查了很多关于makefile的信息......我得到了这个
JFLAGS = -g
JC = javac
.SUFFIXES: .java .class
.java.class:
$(JC) $(JFLAGS) $*.java
CLASSES = \
A.java \
mipsim.java
default: classes
classes: $(CLASSES:.java=.class)
clean:
$(RM) *.class
我知道这个makefile只会从.java生成.class文件。但是,我怎么能创建一个包装器shell脚本......我不知道......
由于
答案 0 :(得分:0)
如果您在使用问题中显示的makefile创建类文件的目录中,则可以执行这些行,假设main
在类mipsim
中:
java mipsim -v <test1.cmd >test1.log
您的static void main(String[] args)
方法必须访问args[0]
才能获得选项-v
。
用于执行此操作的包装器shell脚本可能如下所示
#! /bin/bash
file=$1
java mipsim -v <$file.cmd >$file.log
调用此文件mipsim
,设置其执行权限位并将其存储在同一目录中。要调用,请键入,例如
./mipsim test1
除非用户碰巧在他们的PATH中拥有此目录(他们应该没有这个目录),否则需要初始./
。此外,最好将cmd和日志文件之间的文件名关系硬连线 - 否则用户将输入错误,破坏旧输出等。