W podręczniku GNU Makefile wspomina o tych przedrostkach.
Jeśli podano .ONESHELL, tylko pierwsza linia receptury zostanie sprawdzona pod kątem specjalnych prefiksów („@”, „-” i „+”).
Co robią te przedrostki i gdzie są wymienione?
W podręczniku GNU Makefile wspomina o tych przedrostkach.
Jeśli podano .ONESHELL, tylko pierwsza linia receptury zostanie sprawdzona pod kątem specjalnych prefiksów („@”, „-” i „+”).
Co robią te przedrostki i gdzie są wymienione?
Odpowiedzi:
Kontrolują zachowanie make dla oznakowanych linii poleceń:
@ tłumi normalne „echo” wykonywanego polecenia.
- oznacza zignorowanie statusu wyjścia wykonywanego polecenia (normalnie niezerowy kod zakończenia zatrzymałby tę część kompilacji).
+oznacza „wykonaj to polecenie pod make -n” (lub „make -t” lub „make -q”), gdy polecenia nie są normalnie wykonywane. Zobacz także specyfikację POSIX dla, makea także §9.3 podręcznika GNU Make.
+Notacja oznacza (POSIX znormalizowany) uogólnienie faktycznie (niestandaryzowanych) mechanizm, poprzez linię rozkazu z ${MAKE}lub $(MAKE)jest realizowane na podstawie make -n.
( @Omówiono w §5.2 GNU ręczne wprowadzanie, -jest opisany w §5.5 , a §5.7.1 wspomniano o zastosowaniu +).
@zapobiega wyświetlaniu echa wiersza poleceń w konsoli. Możesz to zrobić globalnie za pomocą -slub--keep-silent
-nakazuje programowi kontynuowanie działania, nawet jeśli polecenie zawodzi z jakiegoś powodu. Możesz to zrobić globalnie za pomocą -iflagi (lub --ignore-errors).
+Nie znałem się, zanim zapytałeś. Tak blisko, jak mogę powiedzieć, że neguje efekt -n, -ti -q, z których każdy w zasadzie powiedzieć wnieść w nie faktycznie uruchomić polecenia. Więc linia z +przednią i tak by została uruchomiona.
Jeśli przeczytałeś oficjalną instrukcję Gnu Make, wszystkie zostały wymienione w rozdziale 5 . W moim starym egzemplarzu podręcznika był to rozdział o „poleceniach”, ale termin du jour wydaje się teraz oznaczać „przepisy”.