#java #makefile #compilation
#java #makefile #Сборник
Вопрос:
Я пытаюсь написать Makefile для своего Java-проекта. Моя цель -:
1. Скомпилируйте с помощью целевого make-java
2. Запустите с помощью целевого запуска-java
Я видел в Интернете этот пример Makefile:
JFLAGS = -g
JC = javac
.SUFFIXES: .java .class
.java.class:
$(JC) $(JFLAGS) $*.java
CLASSES =
Main.java
Book.java
Library.java
default: classes
classes: $(CLASSES:.java=.class)
clean:
$(RM) *.class
run-java:
java Main
Моя проблема заключается в цели make-java (1-й вариант), когда я пытаюсь изменить:
.java.class:
$(JC) $(JFLAGS) $*.java
Для
make-java:
$(JC) $(JFLAGS) $*.java
Это не работает. Можете ли вы дать мне решение о том, как изменить его, чтобы скомпилировать со следующей командой: make make-java
Спасибо
Ответ №1:
Вы не можете изменить это правило. Это правило суффикса; по сути, это шаблон, который гласит: «вот как создать файл .class из файла .java». Комбинация .SUFFIXES
параметра .java .class
и правила со специальной формой .java.class
имеет этот эффект.
Если вы измените его, вы удалите понимание make о том, как создавать файлы .class.
Вы хотите оставить это в покое и добавить это вместо этого:
make-java: classes
чтобы сообщить make, что он должен создавать все .class
файлы при make make-java
вызове.