Makefile - применение переменной в качестве префикса к нескольким частям другой переменной

У меня есть небольшой 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)/$@

Спасибо за вашу помощь.

7
задан tth 13 March 2011 в 11:01
поделиться