Jak dodawać komentarze wieloliniowe w plikach makefile

113

Czy istnieje sposób na skomentowanie wielu wierszy w plikach makefile, tak jak w składni języka C /* */?

Ankur Agarwal
źródło
Jakiej wersji marki używasz?
egrunin

Odpowiedzi:

152

Nie, /* */w Makefile nie ma nic podobnego do komentarzy w stylu C. Jak ktoś inny zasugerował, możesz zrobić komentarz wielowierszowy, używając kontynuacji linii. Na przykład:

# This is the first line of a comment \
and this is still part of the comment \
as is this, since I keep ending each line \
with a backslash character

Wyobrażam sobie jednak, że prawdopodobnie chcesz tymczasowo skomentować fragment pliku makefile w celu debugowania, a dodawanie odwrotnego ukośnika w każdej linii nie jest zbyt praktyczne. Jeśli używasz programu GNU make, sugeruję użycie ifeqdyrektywy z celowo fałszywym wyrażeniem. Na przykład:

ifeq ("x","y")
# here's all your 'commented' makefile content...
endif

Mam nadzieję, że to pomoże.

Eric Melski
źródło
3
Zauważ, że jeśli chcesz "wykomentować" linie w regule, nie wciskaj linii ifeq, endif.
Simon Márton
13

Uważam, że nie. Jedyne style komentarzy, jakie mogę znaleźć, to # dla każdego wiersza lub użyj \, aby zawinąć pierwszą linię.

BowlesCR
źródło
10

Uwaga na temat pomysłu użycia ifeqdo tworzenia komentarzy wielowierszowych w make (1). Nie działają zbyt dobrze, ponieważ jeśli napiszesz:

ifeq (0,1)
    do not risk ifeq comments
    else trouble will find you
    ifeq is even worse
endif

Tekst między ifeq i endif będzie nadal przetwarzany przez make, co oznacza, że ​​nie możesz napisać tego, co chcesz w tej sekcji. A jeśli chcesz napisać długi komentarz i napisać w nim, co chcesz (w tym znaki $, dwukropki i inne, które mają znaczenie dla marki), musisz skomentować każdy wiersz. Więc dlaczego ifeq... :)

Mark Veltzer
źródło
To nie jest poprawne. Jedynym „analizującym” tekstem wewnątrz ifeq przez gmake jest szukanie endifu. Możesz to łatwo sprawdzić za pomocą pliku makefile, który ma jakąś fałszywą składnię wewnątrz ifeq. Dopóki warunek w ifeq ma wartość false, gmake z radością zignoruje błędy składniowe wewnątrz ifeq.
Eric Melski
3
To nie jest poprawne. Wypróbuj następujący przykład: ifeq (0, 1) nie ryzykuj komentarzy ifeq w przeciwnym razie kłopoty cię znajdą endif Inne na początku linii rzucają w błąd. Więc inaczej , ifeq , ifneq i prawdopodobnie wielu innych symboli, które nie wiem o daje problemy.
Mark Veltzer
To słuszna uwaga, ale większość błędów składniowych zostanie zignorowana.
Eric Melski
5
define BOGUS
lines
.....
endef
giuliolunati
źródło
1
podlega tym samym zastrzeżeniom, co ifeqprzypuszczam, ale działa dla mnie. dzięki!
jcomeau_ictx
3

Nie jest to dokładnie to, czego szukasz, ale podobny duch. Nie spodziewam się, że będzie to akceptowana odpowiedź, ale może może komuś pomóc.

Zakładając, że edytujesz swoje pliki makefile w VIM:
albo zdecyduj, które linie chcesz skomentować, albo wybierz je za pomocą 'v'.

Następnie możesz użyć wyrażenia regularnego s/^/#/ aby skomentować wiersze
i s/^#//przywrócić je.

- Uwagi--

  • Aby otworzyć wiersz poleceń vim, naciśnij : (dwukropek)
  • Aby przygotować polecenie dla następnych „n” wierszy, użyj .,+n
  • Przykładowa linia wykorzystująca „v” wygląda następująco: '<,'>s/^/#/
goodguy5
źródło
2
Zamiast tego łatwiejszy w użyciu tryb blokowy. Idź na początek pierwszej linii, aby skomentować, ctrl-v, strzałka w dół do końca, duże I, #, ucieczka. Aby usunąć komentarze: ctrl-v, strzałka w dół do końca, x
brunch875
1

W emacsie możesz oznaczyć region, który chcesz skomentować i uderzyć M-;(który działa comment-dwim).

Dror
źródło