Próbuję użyć wielu plików makefile takich jak to:
W ~/generator/Makefile
:
foo.xml: foo-part1.xml foo-part2.xml foo-part3.xml
./generate $^ > $@
I w ~/some/other/dir/Makefile
:
foo.xml:
$(MAKE) -C ~/generator $@
mv ~/generator/$@ $@
Problemem jest: kiedy idę do ~/some/other/dir/
i biegnij make foo.xml
, nie ma listy zależności dla foo.xml
, i make -C ~/generator foo.xml
nie jest wywoływany nawet jeśli (na przykład) ~/generator/foo-part1.xml
jest nowszy niż cel.
Jedynym rozwiązaniem, o którym myślałem, jest skopiowanie listy zależności z bezwzględnymi ścieżkami do ~/some/other/dir/Makefile
, co jest dość okropne:
foo.xml: ~/generator/foo-part1.xml ~/generator/foo-part2.xml ~/generator/foo-part3.xml
Moje pytanie brzmi zatem: czy w makefile jest jakiś sposób, by o to zapytać inne makefile jakie są zależności od celu? Lub po prostu przekaż zapytanie foo.xml
do tego makefile i zebrać wynik? Zasadniczo chcę, aby drugi plik makefile polegał na pierwszym, jeśli chodzi o decyzję, czy cel powinien zostać odbudowany, i jeśli chodzi o jego budowę.
Odpowiedzi:
0 dla odpowiedzi № 1Rozwiązałem go, mając dwie reguły w drugim makefile:
I w ~/some/other/dir/Makefile
:
.PHONY: ~/generator/foo.xml
~/generator/foo.xml:
$(MAKE) -C ~/generator $(notdir $@)
foo.xml: ~/generator/foo.xml
cp $< $@