Como adicionar comentários de várias linhas em makefiles

113

Existe uma maneira de comentar várias linhas em makefiles como na sintaxe C /* */?

Ankur Agarwal
fonte
Qual versão do make você está usando?
egrunin de

Respostas:

152

Não, não há nada como /* */comentários de estilo C em makefiles. Como outra pessoa sugeriu, você pode fazer um comentário multilinha usando continuações de linha. Por exemplo:

# 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

No entanto, eu imagino que você provavelmente está querendo comentar temporariamente um pedaço de seu makefile por motivos de depuração, e adicionar uma barra invertida em cada linha não é realmente prático. Se você estiver usando o GNU make, sugiro que use a ifeqdiretiva com uma expressão deliberadamente falsa. Por exemplo:

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

Espero que ajude.

Eric Melski
fonte
3
Observe que se você quiser "comentar" as linhas em uma regra, não indente as linhas ifeq, endif.
Simon Márton
13

Eu acredito que a resposta é não. O único estilo de comentário que posso encontrar é # para cada linha, ou use \ para quebrar a primeira linha.

BowlesCR
fonte
10

Uma nota sobre a ideia de usar ifeqcomentários de várias linhas no make (1). Eles não funcionam muito bem, pois se você escrever o seguinte:

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

O texto entre ifeq e endif ainda será analisado pelo make, o que significa que você não pode escrever o que quiser nessa seção. E se você quiser escrever um comentário longo e escrever o que quiser no comentário (incluindo sinais $, dois pontos e mais, que têm um significado para make), você deve comentar cada linha. Então, por que ifeq... :)

Mark Veltzer
fonte
Isso não é correto. A única "análise" que gmake faz do texto dentro do ifeq é procurar um endif. Você pode verificar isso facilmente com um makefile que tem uma sintaxe falsa dentro do ifeq. Contanto que a condição no ifeq seja avaliada como falsa, o gmake irá ignorar os erros de sintaxe dentro do ifeq.
Eric Melski
3
Isso não é correto. Tente o seguinte exemplo: ifeq (0, 1) não arrisque comentários ifeq else o problema o encontrará endif O else no início da linha lança make em erros. Então outra coisa , ifeq , ifneq e possivelmente muitos outros símbolos que eu não sei sobre a vontade de dar-lhe problemas.
Mark Veltzer
Esse é um ponto justo, mas a maioria dos erros sintáticos será ignorada.
Eric Melski
5
define BOGUS
lines
.....
endef
Giuliolunati
fonte
1
sujeito às mesmas advertências ifeqque suponho, mas funciona para mim. obrigado!
jcomeau_ictx
3

Não é exatamente o que você está procurando, mas semelhante em espírito. Não espero que seja uma resposta aceita, mas talvez possa ajudar alguém.

Assumindo que você está editando seus makefiles no VIM:
Decida quais linhas você deseja comentar ou selecione-as com 'v'.

Então você pode usar a regex s/^/#/para comentar as linhas
e s/^#//revertê-las.

--Notas--

  • Para abrir a linha de comando do vim, pressione :(dois pontos)
  • Para preparar o comando para as próximas 'n' linhas, use .,+n
  • Uma linha de amostra usando "v" se parece com: '<,'>s/^/#/
bom rapaz 5
fonte
2
Mais fácil de usar o modo de bloqueio. Vá para o início da primeira linha para comentar, ctrl-v, seta para baixo até o final, I maiúsculo, #, escape. Para excluir os comentários: ctrl-v, seta para baixo até o fim, x
brunch875
1

No emacs, você pode marcar a região que deseja comentar e clicar M-;(que roda comment-dwim).

Dror
fonte