Как добавить многострочные комментарии в make-файлы

114

Есть ли способ закомментировать несколько строк в make-файлах, как в синтаксисе C /* */?

Анкур Агарвал
источник
Какую версию make вы используете?
egrunin

Ответы:

153

Нет, /* */в make-файлах нет ничего лучше комментариев в стиле C. Как предложил кто-то другой, вы можете сделать многострочный комментарий, используя продолжение строки. Например:

# 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

Однако я полагаю, что вы, вероятно, хотите временно закомментировать часть своего make-файла для целей отладки, а добавление обратной косой черты в каждую строку не очень практично. Если вы используете GNU make, я предлагаю вам использовать эту ifeqдирективу с намеренно ложным выражением. Например:

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

Надеюсь, это поможет.

Эрик Мельски
источник
3
Обратите внимание: если вы хотите «закомментировать» строки в правиле, не делайте отступы строк ifeq, endif.
Саймон Мартон,
13

Я считаю, что ответ отрицательный. Единственный стиль комментария, который я могу найти, - это # ​​для каждой строки или использовать \ для переноса первой строки.

BowlesCR
источник
10

Замечание об идее использования ifeqмногострочных комментариев в make (1). Они не работают очень хорошо, если вы напишете следующее:

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

Текст между ifeq и endif будет по-прежнему анализироваться make, что означает, что вы не можете писать в этом разделе все, что хотите. И если вы хотите написать длинный комментарий и написать в нем все, что хотите (включая знаки $, двоеточия и многое другое, которые имеют значение для make), вы должны прокомментировать каждую строку. Так почему ifeq... :)

Марк Вельцер
источник
Это не так. Единственный «синтаксический анализ» текста внутри ifeq, который выполняет gmake, - это поиск endif. Вы можете легко проверить это с помощью make-файла, который содержит ложный синтаксис внутри ifeq. Пока условие в ifeq оценивается как false, gmake с радостью игнорирует синтаксические ошибки внутри ifeq.
Эрик Мельски
3
Это не так. Попробуйте следующий пример: ifeq (0, 1) не рискуйте комментариями ifeq, иначе у вас возникнут проблемы endif else в начале строки выдает ошибки. Так что иначе , ifeq , ifneq и, возможно, многие другие символы, о которых я не знаю , доставят вам проблемы.
Марк Вельцер
Это справедливо, но большинство синтаксических ошибок будет проигнорировано.
Эрик Мельски
5
define BOGUS
lines
.....
endef
Джулиолунати
источник
1
с теми же оговорками, что и ifeqя, но работает для меня. Спасибо!
jcomeau_ictx
3

Не совсем то, что вы ищете, но похожие по духу. Я не ожидаю, что это будет принятый ответ, но, возможно, это может кому-то помочь.

Предполагая, что вы редактируете свои make-файлы в VIM:
либо решите, какие строки вы хотите прокомментировать, либо выберите их с помощью 'v'.

Затем вы можете использовать регулярное выражение, s/^/#/чтобы закомментировать строки
и s/^#//вернуть их.

--Ноты--

  • Чтобы открыть командную строку vim, нажмите :(двоеточие)
  • Чтобы подготовить команду для следующих n строк, используйте .,+n
  • Строка образца с буквой "v" выглядит так: '<,'>s/^/#/
goodguy5
источник
2
Вместо этого проще использовать блочный режим. Перейдите в начало первой строки, чтобы прокомментировать, ctrl-v, стрелка вниз до конца, заглавная I, #, escape. Чтобы удалить комментарии: ctrl-v, стрелка вниз до
конца
1

В emacs вы можете отметить область, которую хотите закомментировать, и нажать M-;(которая выполняется comment-dwim).

Дрор
источник