Estoy tratando de usar múltiples makefiles como este:
En ~/generator/Makefile
:
foo.xml: foo-part1.xml foo-part2.xml foo-part3.xml
./generate $^ > $@
Y en ~/some/other/dir/Makefile
:
foo.xml:
$(MAKE) -C ~/generator $@
mv ~/generator/$@ $@
El problema es: cuando voy a ~/some/other/dir/
y correr make foo.xml
, no hay una lista de dependencias para foo.xml
y make -C ~/generator foo.xml
no se llama incluso si (por ejemplo) ~/generator/foo-part1.xml
es más nuevo que el objetivo
La única solución que pensé es copiar la lista de dependencias con rutas absolutas a ~/some/other/dir/Makefile
, lo cual es bastante horrible:
foo.xml: ~/generator/foo-part1.xml ~/generator/foo-part2.xml ~/generator/foo-part3.xml
Entonces, mi pregunta es: ¿hay alguna manera en un archivo MAKE para preguntar otro makefile ¿cuáles son las dependencias de target? O simplemente reenviar la solicitud foo.xml
a ese archivo MAKE y recoger el resultado? Básicamente quiero que el segundo archivo MAKE se base en el primero cuando se trata de decidir si un objetivo debe ser reconstruido, y cuando se trata de construirlo.
Respuestas
0 para la respuesta № 1Lo resolví teniendo dos reglas en el segundo archivo MAKE:
Y en ~/some/other/dir/Makefile
:
.PHONY: ~/generator/foo.xml
~/generator/foo.xml:
$(MAKE) -C ~/generator $(notdir $@)
foo.xml: ~/generator/foo.xml
cp $< $@