无法为JAVA创建makefile

时间:2014-04-28 03:44:51

标签: java ubuntu makefile

我想尝试为我的项目创建一个makefile。我在linux中运行它,而不是在windows中,特别是ubuntu。

这是我的项目目录:

project_root
    /src
        A.java
        B.java
        C.java
        D.java
    /bin
       #this is where I'd like the .class files
    /include 
        A.jar
        B.jar
        C.jar
    makefile
    run.sh

这就是我的makefile的样子:

JC = javac
CLASSPATH = .:include/*
SRCPATH = ./src/
OUTDIR = ./bin/

.SUFFIXES: .java .class

.java.class:
        $(JC) -cp $(CLASSPATH) $(OUTPATH) $*.java

CLASSES = \
        $(SRCPATH)A.java \
        $(SRCPATH)B.java \
        $(SRCPATH)C.java \
        $(SRCPATH)D.java 

default: classes

classes: $(CLASSES:.java=.class)

clean:
    $(RM) $(SRCPATH)*.class

当我在项目目录中运行make时,我得到了这个输出:

make: *** No rule to make target `.java', needed by `javac'.  Stop.

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

我认为当您定义.java.class后缀规则时,您不会将TAB字符作为该行中的第一个字符。

在make中,每个配方行必须包含一个实际的TAB字符(而不仅仅是空格)作为该行中的第一个字符。如果第一个字符不是真正的TAB,那么它不是配方行。

您没有收到语法错误的原因是因为CLASSPATH中的冒号,您的行看起来像一条规则;它看起来像这样:

javac -cp .:include/* ./bin/ .java

$*在此扩展为空),由make解析为定义三个目标javac-cp.,每个目标都取决于{ {1}},include/*./bin/

因此您的错误消息。