【发布时间】:2014-06-09 10:13:09
【问题描述】:
首先,对不起,如果这是微不足道的,我没有制作文件的经验,我只在 Windows 上开发并且我习惯了 IDE。
我需要编译一个外部 java 库。它带有一个生成文件。不幸的是,我在运行它时遇到了很多麻烦。
我从 GnuWin32 工具集中安装了 make 和 grep 并将其添加到我的路径变量中。 当我尝试运行 makefile 时,它会窒息:
"javac: invalid flag: `find"
Usage: javac <options> <source files>
它似乎在解释重音符号时遇到了问题。那应该是被文本编码杀死的引号吗?我做了一个快速的谷歌搜索,但我没有找到任何相关的东西。
这是我尝试运行的完整 make 文件:
# UNIX:
#JAVAC=javac -encoding utf8 -target 1.6 -source 1.6 -Xlint:deprecation -Xlint:unchecked -cp "../lib/asm-4.1.jar:../lib/asm-analysis-4.1.jar:../lib/asm-commons-4.1.jar:../lib/asm-tree-4.1.jar:../lib/asm-util-4.1.jar:../lib/asm-xml-4.1.jar:../lib/junit-4.0.jar"
# Win32:
JAVAC=javac -encoding utf8 -target 1.6 -source 1.6 -Xlint:deprecation -Xlint:unchecked -cp "../lib/asm-4.1.jar;../lib/asm-analysis-4.1.jar;../lib/asm-commons-4.1.jar;../lib/asm-tree-4.1.jar;../lib/asm-util-4.1.jar;../lib/asm-xml-4.1.jar;../lib/junit-4.0.jar"
JAVA=java
SOURCES=`find . -name "*.java" | grep -v \\\#`
JAR=pqlib.jar
.PHONY = all default clean test benchmark jar
default: all
all:
${JAVAC} `find . -name "*.java" | grep -v \\\#`
clean:
rm -f `find . -name "*.class"`
test: all
${JAVA} org.junit.runner.JUnitCore `find edu -name "*Test.java" | grep -v \\\# | sed 's/^\.\///' | sed 's/\.java//' | tr '/' '.'`
benchmark: all bench/MiniBench.class
${JAVA} bench.MiniBench
jar: all
rm -f ${JAR}
jar cf ${JAR} `find edu -name "*.class" | grep -v Test`
非常感谢任何帮助。
【问题讨论】:
-
cygwin 在
Windows上提供find和backtick 命令替换。 -
应该可以将该库的目录树输入到Eclipse(或其他IDE)中并在那里编译,然后构建jar。 make 文件没有做任何值得注意的事情。