chciałbym zbudować regułę podobny do tego w moim Makefile:Producent: wykonać akcję dla każdego warunków wstępnych
log: test_A test_B
./test_A >> [email protected]
./test_B >> [email protected]
ale test_A
i test_B
są częścią zmiennej $(TESTS)
.
Czy możliwe jest wykonanie akcji (tutaj: wywołanie programu) dla każdego wymagania wstępnego w GNU/make?
Uwaga: How do I make a makefile rule execute its prerequisites? nie rozwiązuje tego problemu całkowicie, ponieważ wymagany jest cel log
(make log
).
Dzięki za odpowiedź, to potwierdza to, co skończyło się z: '$ (test foreach $ ^, $ (shell ./$(test) >> $ @)) ' – CJlano
Jeśli to polecenia dla twojej reguły _log_, to' $ (shell ...) 'jest rodzajem podważania rzeczy: polecenia dla reguły będą puste , a wykonanie 'test_?' stanie się produktem ubocznym polegającym na odgadywaniu poleceń (zamiast wydawania poleceń). Filozoficznie błędne i - bardziej praktycznie - niemożliwe do rozszerzenia, aby uchwycić błąd jednego z twoich skryptów "testowych". (Ale mimo wszystko wydaje się, że chcesz oznaczyć tę odpowiedź jako zaakceptowaną ...) –
Nie wykonasz tej pętli dwukrotnie, raz dla test_A i raz dla test_B? Mam podobny problem i marka zachowuje się bardzo dziwnie. – Jaseem