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

问题描述 投票:0回答:1

我有一个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'所需的对象a.class。”这是我第一次使用makefile,我不知道该如何进行。

谢谢大家。

java makefile
1个回答
0
投票

很少有较小的修复程序可以使项目向前发展。

  • 修复了编译规则-在JFLAGS周围需要空格
  • 将输入文件用于构建规则-使其包含完整路径名
  • 添加vpath告诉编译器源文件可以在哪里
.java.class:
        $(JC) $(JFLAGS) $^

CLASSPATH = .:./src/project

vpath %.java src/project

从问题中不清楚您想将对象放置在何处。考虑添加-d来指定目标文件夹,并设置添加cp -d ...来指定运行目标的位置。您需要修复运行时才能添加空格。

© www.soinside.com 2019 - 2024. All rights reserved.