我想尝试为我的项目创建一个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.
有人可以帮忙吗?
答案 0 :(得分:0)
我认为当您定义.java.class
后缀规则时,您不会将TAB字符作为该行中的第一个字符。
在make中,每个配方行必须包含一个实际的TAB字符(而不仅仅是空格)作为该行中的第一个字符。如果第一个字符不是真正的TAB,那么它不是配方行。
您没有收到语法错误的原因是因为CLASSPATH
中的冒号,您的行看起来像一条规则;它看起来像这样:
javac -cp .:include/* ./bin/ .java
($*
在此扩展为空),由make解析为定义三个目标javac
,-cp
和.
,每个目标都取决于{ {1}},include/*
和./bin/
。
因此您的错误消息。