Autoconf: dnl по сравнению с #

Руководство Автоконфигурации указывает, что строки комментария могут запуститься с также dnl или #.

Есть ли какое-либо различие между ними, какая-либо причина использовать один, а не другой при каком-либо обстоятельстве? Или это - просто вопрос вкуса?

38
задан DevSolar 30 July 2010 в 12:07
поделиться

2 ответа

В configure.ac строки, закомментированные '#', которые встречаются после AC_INIT, появятся в результирующем скрипте configure. Комментарии dnl не появятся. Одна из целей dnl - отбросить ненужные новые строки в попытке сделать сценарий configure читабельным. Также уместно использовать комментарии dnl для документирования макроса m4; эти комментарии не имеют смысла в сценарии configure, поскольку макрос m4 там не появляется, только его расширение.

Комментарии в Makefile.am обрабатываются по-другому. Makefile.am обрабатывается не m4, а automake, где принято отбрасывать строки, начинающиеся с ##, которым предшествует только пробел. (Хотя комментарии ### переносятся в Makefile.in) Поскольку Makefile.am не обрабатывается m4, 'dnl' не вводит комментарий.

53
ответ дан 27 November 2019 в 03:37
поделиться

dnl - это макрос m4, который отбрасывает весь ввод, следующий за ним в той же строке (включая новую строку). # ничего не значит в m4, поэтому он попадает в целевой файл (Makefile?), в котором он действует как комментарий.

Итак, ключевое различие в том, что dnl - это комментарий в исходном тексте, тогда как # становится комментарием в сгенерированном файле.

14
ответ дан 27 November 2019 в 03:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: