如何在项目的makefile中指定任何类的路径



我有一个java项目,不同的目录包含不同的类。我正试图在上层目录中创建一个makefile,链接所有的类并编译反项目。因此,要达到a级,它应该遵循这条道路/src/project/packageA/a.java,并到达b/src/project/packageB/b.java.我有以下makefile:

JFLAGS = -g
JC = javac
JVM = javac
.SUFFIXES: .java .class
.java.class:
$(JC)$(JFLAGS)$*.java
CLASSPATH = .:./src/project
CLASSES = 
a.java 
b.java 
...
MAIN = Main
default: classes
classes: $(CLASSES:.java=.class)
run: $(MAIN).class
$(JVM)$(MAIN)
clean:
$(RM)*.class

其中CLASSES是包含项目中所有类的宏。我尝试为每个目录重新定义变量PATH,分配vpath并直接在每个的类名中指定路径。但似乎都不起作用,我总是收到错误消息"没有规则来构建‘classes’所需的对象.class。"这是我第一次使用makefile,我不知道如何继续。

谢谢大家。

一些小的修复可以推动项目的发展。

  • 修复JFLAGS周围编译需要空间的规则
  • 使用生成规则的输入文件,使其包含完整的路径名
  • 添加vpath告诉编译器源文件可以在哪里
.java.class:
$(JC) $(JFLAGS) $^
CLASSPATH = .:./src/project
vpath %.java src/project

这个问题不清楚你想把物体放在哪里。考虑添加-d以指定目标文件夹,并设置添加cp -d ...以指定运行目标的位置。您需要修复运行时以添加空间。

相关内容

最新更新