为JAVA创建makefile时遇到问题
我想尝试为我的项目创建一个makefile。我在linux中运行这个,而不是在windows中,特别是在ubuntu中 这是我的项目目录的外观:为JAVA创建makefile时遇到问题,java,ubuntu,makefile,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.
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
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
这就是我的makefile的外观:
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
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.
有人能帮忙吗?我认为在定义
.java.class
后缀规则时,行中的第一个字符不是制表符
在make中,每个配方行必须包含一个实际的制表符(不仅仅是空格)作为行中的第一个字符。如果第一个字符不是真正的制表符,那么它就不是配方行
没有出现语法错误的原因是,由于类路径中的冒号,行看起来像一条规则;看起来是这样的:
javac -cp .:include/* ./bin/ .java
($*
在此扩展为零)make将其解析为定义三个目标,javac
、-cp
和
,每一个目标都依赖于include/*
、和.java
这就是您的错误消息。为什么?这给我的印象是,有人真的使用make for java吗?我从来没见过有人这样做。标准的Java构建工具是ant、maven、gradle。。。但是制造?把这个交给C组吧。