我正在编写一个 Makefile 来编译 Java 程序。它看起来像这样:
#!/bin/bash
LANG=en
CURRENT_EX = hello.java
RUN_CURRENT_EX = for i in `ls *.class`; do java *$\.class ; done
RM = rm -f
TRASH = *~ *.class
ALL = $(RM) $(THRASH) && \
javac $(CURRENT_EX)
all:
$(ALL) && \
$(RUN_CURRENT_EX)
当我编译一个 Java 程序(假设它的名称是“hello.java”)时,它的工作方式是这样的。首先,我在 Linux 终端中输入:
$ javac hello.java
它产生一个名为“Hello.class”的文件,为了执行它,我把
$ java Hello
问题是我想通过 Makefile 自动执行此任务,但我遇到了以下问题:
RUN_CURRENT_EX = for i in `ls *.class`; do java *$\.class ; done
上面写着“java *$.class”。我想要做的是只从“Hello.class”文件名中获取字符串“Hello”,但我的正则表达式不起作用:
$ make all
Error: Could not find or load main class Hello.class
make: *** [all] Error 1
我怎样才能从“Hello.class”中删除字符串“.class”?
提前致谢 :-)