У меня есть небольшой java-проект, который я хочу построить с помощью make-файла, код находится в src / package ... /*.java
, байт-код должен идти в bin / package ... / *. class
.
Мой текущий файл выглядит так (упрощенно):
JC = javac
SRCDIR = src
BINDIR = bin
JCFLAGS = -d $(BINDIR)/
CLASSES = $(SRCDIR)/package/class1.java $(SRCDIR)/package/class2.java $(SRCDIR)/package/class3.java
default:
$(JC) $(JCFLAGS) $(CLASSES)
Он работает и делает то, что должен, но должен быть более элегантный способ сделать это.
Например, есть ли способ применить путь ( $ (SRCDIR)
и имя пакета) в качестве префикса ко всем именам файлов классов, поэтому мне не нужно указывать путь отдельно перед каждым классом ?
Все классы должны быть скомпилированы за один javac-вызов, поскольку в них есть циклические зависимости, поэтому использование собственной цели для каждого класса не работает:
default: $(CLASSES)
%.java:
$(JC) $(JCFLAGS) $(SRCDIR)/$@
Спасибо за вашу помощь.