Java 又一个",;“多目标模式”;生成文件错误
我试着四处看看,但我在这里看到的所有问题都太高了,我无法理解 这是我的makefile:Java 又一个",;“多目标模式”;生成文件错误,java,makefile,Java,Makefile,我试着四处看看,但我在这里看到的所有问题都太高了,我无法理解 这是我的makefile: compile: bin src cmp bin: mkdir bin src: find src -name "*.java" > sources.txt cmp: javac -cp biuoop-1.4.jar -d bin @sources.txt run: java -cp biuoop-1.4.jar:bin:src/resources Ass6Game jar: jar -cmf Ass
compile: bin src cmp
bin: mkdir bin
src: find src -name "*.java" > sources.txt
cmp: javac -cp biuoop-1.4.jar -d bin @sources.txt
run: java -cp biuoop-1.4.jar:bin:src/resources Ass6Game
jar: jar -cmf Ass6Game.jar Manifest.txt -C bin . -C src resources
当我尝试运行
makecompile
时,我得到了“多目标模式”错误。我做错了什么?您的makefile语法不正确
问题是
一般来说,规则如下所示:
targets : prerequisites
recipe
…
targets : prerequisites ; recipe
recipe
或者像这样:
targets : prerequisites
recipe
…
targets : prerequisites ; recipe
recipe
然而,您的配方行位于必备位置,因此java命令中的:
令人困惑
您的makefile应该如下所示
compile: bin src cmp
bin: ; mkdir bin
src: ; find src -name "*.java" > sources.txt
cmp: ; javac -cp biuoop-1.4.jar -d bin @sources.txt
run: ; java -cp biuoop-1.4.jar:bin:src/resources Ass6Game
jar: ; jar -cmf Ass6Game.jar Manifest.txt -C bin . -C src resources
compile: bin src cmp
bin:
mkdir bin
src:
find src -name "*.java" > sources.txt
cmp:
javac -cp biuoop-1.4.jar -d bin @sources.txt
run:
java -cp biuoop-1.4.jar:bin:src/resources Ass6Game
jar:
jar -cmf Ass6Game.jar Manifest.txt -C bin . -C src resources
还是像这样
compile: bin src cmp
bin: ; mkdir bin
src: ; find src -name "*.java" > sources.txt
cmp: ; javac -cp biuoop-1.4.jar -d bin @sources.txt
run: ; java -cp biuoop-1.4.jar:bin:src/resources Ass6Game
jar: ; jar -cmf Ass6Game.jar Manifest.txt -C bin . -C src resources
compile: bin src cmp
bin:
mkdir bin
src:
find src -name "*.java" > sources.txt
cmp:
javac -cp biuoop-1.4.jar -d bin @sources.txt
run:
java -cp biuoop-1.4.jar:bin:src/resources Ass6Game
jar:
jar -cmf Ass6Game.jar Manifest.txt -C bin . -C src resources
或者实际使用make提供给你的东西
compile: bin src cmp
bin: ; mkdir bin
src: ; find src -name "*.java" > sources.txt
cmp: ; javac -cp biuoop-1.4.jar -d bin @sources.txt
run: ; java -cp biuoop-1.4.jar:bin:src/resources Ass6Game
jar: ; jar -cmf Ass6Game.jar Manifest.txt -C bin . -C src resources
compile: bin src cmp
bin:
mkdir bin
src:
find src -name "*.java" > sources.txt
cmp:
javac -cp biuoop-1.4.jar -d bin @sources.txt
run:
java -cp biuoop-1.4.jar:bin:src/resources Ass6Game
jar:
jar -cmf Ass6Game.jar Manifest.txt -C bin . -C src resources
JAR:=biuoop-1.4.JAR
来源:=$(shell find src-name'*.java')
#或者如果src是一个没有子目录的单一目录
#来源:=$(通配符src/*.java)
GAMEJAR:=Ass6Game.jar
冒牌货:全部
全部:$(罐)
箱子:
mkdir-bin
$(JAR):$(来源)| bin
javac-cp$@-d bin$^
#看http://www.gnu.org/software/make/manual/make.html#Force-“部队”在这里的行动目标。
$(GAMEJAR):强制
jar-cmf$@Manifest.txt-C bin-C src资源
部队:;
.骗子:快跑
运行:$(GAMEJAR)
java-cp$(JAR):bin:src/resources$(GAMEJAR)
这就更好地遵循了这一原则,实际上让make可以根据需要智能地重建您的文件