我目前正在使用以下Makefile:
JAVAC=javac
sources = $(wildcard *.java)
classes = $(sources:.java=.class)
all: myProgram
myProgram: $(classes)
clean :
rm -f *.class
%.class : %.java
$(JAVAC) $<
myProgram最初只是一个.java文件,但我用.jar可执行文件替换了它。我基本上还是想做一些简单的事情,比如:
make myProgram
如何修改我的Makefile来实现这一点?感谢您的意见/建议。
只需添加一个新目标(例如"jar"),并给它适当的"jar"命令
示例:
JAVAC=javac
sources = $(wildcard *.java)
classes = $(sources:.java=.class)
all: myProgram
myProgram: $(classes)
clean :
rm -f *.class
%.class : %.java
$(JAVAC) $<
jar: $(classes)
jar cvf myjarfile.jar $(classes)
您可以通过多种方式"调整"这个示例。例如,您可能希望参数化"jar"命令(例如JAR=jar
),您可能想要创建一个清单(也许让makefile本身使用适当的"echo"命令动态创建清单),等等。
以下是"jar"的Oracle文档:
http://docs.oracle.com/javase/tutorial/deployment/jar/build.html
上面的代码在这里对我不起作用,我对清单文件进行了一些更改:
JAVAC=javac
sources = $(wildcard *.java)
classes = $(sources:.java=.class)
all: myProgram
myProgram: $(classes)
%.class: %.java
$(JAVAC) $<
jar:
@echo "Manifest-Version: 1.0" > manifest.txt
@echo "Class-Path: ." >> manifest.txt
@echo "Main-Class: Main" >> manifest.txt
@echo "" >> manifest.txt
jar -cmf manifest.txt JARNAME.jar $(classes)
clean:
rm -f *.class
rm manifest.txt