web-dev-qa-db-ja.com

Autoconf:dnl vs.#

Autoconfigのマニュアルには、コメント行はdnlまたは#のいずれかで始めることができると記載されています。

それらの間に違いはありますか、どのような状況でも一方を他方ではなく使用する理由はありますか?それとも純粋に好みの問題ですか?

38
DevSolar

Configure.acでは、AC_INITの後に発生する「#」でコメントされた行が結果のconfigureスクリプトに表示されます。 dnlコメントはしません。 dnlの目的の1つは、configureスクリプトを読みやすくするために、不要な改行を破棄することです。また、dnlコメントを使用してm4マクロを文書化することも適切です。 m4マクロはそこに表示されず、その展開のみが表示されるため、これらのコメントはconfigureスクリプトでは意味がありません。

Makefile.amのコメントは異なる方法で処理されます。 Makefile.amはm4ではなく、automakeによって処理されます。この場合、慣例では、##で始まり、先頭に空白のみが続く行は破棄されます。 (###コメントはMakefile.inに引き継がれますが)Makefile.amはm4によって処理されないため、「dnl」はコメントを導入しません。

53
William Pursell

dnlは、同じ行(改行を含む)でそれに続くすべての入力を破棄するm4マクロです。 #はm4では何も意味しないので、最終的にはターゲット(Makefile?)になり、コメントとして機能します。

したがって、主な違いは、dnlが元のソースのコメントであるのに対し、#は生成されたファイルのコメントになります。

14
Marcelo Cantos