tengo un pequeño proyecto de Java que quiero construir usando un archivo MAKE, el código está en src/package... /*.java
, el bytecode debe ir a bin/package.../*.class
.
Mi archivo actual se parece a esto (simplificado):Makefile - aplicando una variable como prefijo a varias partes de otra variable
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)
funciona y hace lo que debe, pero tiene que haber una manera más elegante de hacer esto.
Por ejemplo, ¿hay alguna manera de aplicar la ruta ($(SRCDIR)
y el nombre del paquete) como un prefijo para todos los nombres de clase, así que no tengo que poner la ruta por separado en frente de cada clase?
Todas las clases tienen que ser compilado en una javac-llamada, ya que hay dependencias circulares en ellos, así que usar un objetivo propio para cada clase no funciona:
default: $(CLASSES)
%.java:
$(JC) $(JCFLAGS) $(SRCDIR)/[email protected]
Gracias por su ayuda.