gpt4 book ai didi

java - 另一个 "multiple target patterns"makefile 错误

转载 作者:行者123 更新时间:2023-11-30 08:06:15 29 4
gpt4 key购买 nike

我尝试环顾四周,但我在这里看到的所有问题都太高级了,我无法理解。

这是我的 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

当我尝试运行 makecompile 时,出现“多个目标模式”错误。我做错了什么?

最佳答案

您的 makefile 语法不正确。

syntax of a make rule

In general, a rule looks like this:

targets : prerequisites
recipe

or like this:

targets : prerequisites ; recipe
recipe

尽管您的配方行位于先决条件位置,因此 java 命令中的 : 会使 make 感到困惑。

你的 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

或者实际使用 make 为您提供的更多类似这样的东西

JAR := biuoop-1.4.jar
SOURCES := $(shell find src -name '*.java')
# Or if src is a single directory without sub-directories
#SOURCES := $(wildcard src/*.java)

GAMEJAR := Ass6Game.jar

.PHONY: all
all: $(JAR)

bin:
mkdir bin

$(JAR): $(SOURCES) | bin
javac -cp $@ -d bin $^

# See http://www.gnu.org/software/make/manual/make.html#Force-Targets for what `FORCE` is doing here.
$(GAMEJAR): FORCE
jar -cmf $@ Manifest.txt -C bin . -C src resources

FORCE: ;

.PHONY: run
run: $(GAMEJAR)
java -cp $(JAR):bin:src/resources $(GAMEJAR)

紧随 Rules of Makefiles更好一点,实际上让 make 根据需要智能地重建您的文件。

关于java - 另一个 "multiple target patterns"makefile 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31052469/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com