Проблемный make-файл для Java - PullRequest
       0

Проблемный make-файл для Java

0 голосов
/ 01 октября 2011
JFLAGS = -d bin -cp lib/slick.jar:lib/lwjgl.jar

JC = javac

.SUFFIXES: .java .class

.java.class: $(JC) $(JFLAGS) src/$*.java

CLASSES = \
          Game.java \
          Block.java \
          BlockMap.java \

default: classes

classes: $(CLASSES:.java=.class)

clean: $(RM) bin/*.class

Мои исходные файлы находятся в src /, и я хочу, чтобы скомпилированные файлы были в bin /. Когда я запускаю make, он выдает мне эту ошибку

makefile:7: *** multiple target patterns.  Stop.

Ответы [ 2 ]

2 голосов
/ 01 октября 2011

Поскольку вы не знаете, как управлять Makefile, нет причины НЕ использовать лучший инструмент.Вот минимальный файл Ant, который должен делать эту работу.А поскольку Ant разработан для Java, большинство проблем с обработкой каталогов в Make просто не существует.

В качестве бонуса вы можете обратиться к любому разработчику Java за дополнительной помощью.Java-разработчики и эксперты Makefile в наши дни встречаются довольно редко.

<project name="Game" default="classes">
    <target name="classes">
        <mkdir dir="bin" />
        <javac srcdir="src" destdir="bin" 
            classpath="lib/slick.jar;lib/lwjgl.jar"
            includeantruntime="false"/>
    </target>
    <target name="clean">
        <delete dir="bin" />
    </target>
</project>
2 голосов
/ 01 октября 2011

Проблема здесь:

.java.class: $(JC) $(JFLAGS) src/$*.java

и здесь:

clean: $(RM) bin/*.class

Это не правила, а команды. И команды должны быть в своих строках с вкладкой в ​​начале строки .

.java.class: 
    $(JC) $(JFLAGS) src/$*.java

clean: 
    $(RM) bin/*.class

Не то чтобы это все проблемы с Makefiles и Java в целом и с этим Makefile в частности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...