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 /* */?


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.


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ę.


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... :)


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


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/^/#/

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).

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.