fel*_*doh 5 java dependencies makefile javac package
我一整天都在努力让这件事发挥作用。基本上我需要创建一个 makefile 来从其源代码构建我的项目。我对 Linux 有一点了解,但了解不多,而且我是一个完整的 makefile 新手。
我已经尝试了来自网络各地的大量示例,但都抱怨它们缺少依赖项。其他人建议使用 Ant 或 Mavern,但这不可能,准确的交接通知是:
引自规范
您提交的内容应包含一个适合在 Linux 系统上使用的 comp2010.tar 文件。这必须包含一个 Makefile 文件和所有源代码。您不应提交任何 .class 文件。您的 Makefile 必须从 Java 源代码构建该工具。主类必须称为 Blaise。简而言之,(自动)测试过程将包括:
tar xf comp2010.tar
make
java Blaise < test.file > testout 2> testerr
这些命令将在使用 Java 1.6 的标准部门教学 Linux 环境中的空目录中执行。CLASSPATH 将包含 ANTLR jar,版本 3.2。
注意:请确保您提交的内容可以在标准部门机器上编译和执行。请确保您使用正确的 Java 版本,并且不使用绝对路径。如果您使用任何外部库,则还需要提交这些库。
所以你看,我无法设置任何环境变量,因为运行它的机器不是我的,而且我不被允许管理访问。我无法提交任何类文件,因此 makefile 不适合我,Ant / Mavern 脚本将无法工作,因为测试过程是自动化的并使用此 makefile,而我只允许提交 .java 文件。所以我需要构建一个 makefile,这是没有办法解决的。
源码结构如下:
src\Package1*.java
src\Package2*.java
自动生成\PackageA*.java
编译所需的所有 3 个文件夹中都有源文件。Main()方法位于src\Package1\1.java中
这些目录中的每一个都是 Eclipse 中的一个包,这 3 个包相互依赖以及一个外部 Jar 文件 antlr-3.2.jar
那么我该如何制作这个makefile。这是我的问题,我在下面提供了我自己的尝试:
JAVAC = javac
CLASS_FILES = src/package1/1.class auto-generated/packageA/2.class auto-generated/packageA/3.class auto-generated/packageA/4.class src/Package2/5.class src/Package2/6.class src/Package2/7.class src/Package2/8.class src/Package2/9.class src/Package2/10.class src/Package2/11.class src/Package2/12.class antlr-3.2.jar.*
Default: $(CLASS_FILES)
%.class: %.java
$(JAVAC) $<
clean: $(RM) *.class
Run Code Online (Sandbox Code Playgroud)
此操作失败,并出现诸如“org.antlr.runtime 不存在”之类的错误,该错误位于antlr-3.2.jar 内。我束手无策,需要尽快交出。我假设我只是错误地导入了 jar,也许我需要使用 CLASSPATH 是什么。如果这是一个简单的问题,我很抱歉,但我已经尝试了 6 个小时来解决其中一个问题。如果您能提供任何帮助,我们将不胜感激。
亲切的问候 费尔多
我在这里可以看到一些问题:
您要为哪个版本的 make 构建 makefile?我知道的版本将采用如下格式:
JAVAC = javac
JAVACFLAGS =
SRC= Blaise.java \
package1/1.java \
packageA/2.java
CLS= $(SRC:.java=.class)
all: $(CLS)
.SUFFIXES : .class .java
.java.class :
$(JAVAC) $(JAVACFLAGS) $<
Run Code Online (Sandbox Code Playgroud)