为jar可执行文件创建Makefile



我目前正在使用以下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

最新更新