• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:makefileの#の説明)

makefileの#の説明

このQ&Aのポイント
  • makefileの#記号について説明します。
  • makefileでの#記号は、コマンドのテキスト内でのコメントを導入しません。
  • #以降の文字はシェルに渡され、その処理方法はシェルに依存します。

質問者が選んだベストアンサー

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.3

その前にある文章で 「#以降がコメントとなり、無視される」 と書かれています。 その文章以降は、その例外事項です。 Makefile が、「make自身の動作等を設定する部分」と「実行するコマンドを記述する部分」から構成されているのは、ご存知かと思います。 このうち、 コマンドを記述する箇所では(in the text of commands)、 # は、makeコマンドのコメント(a `make' comment)にはならない(does not introduce )、と書いてあります。 ※ 原文では、 a make comment のmakeは書体が変えてあります。 英語のmake ではなく、 make コマンド だ、という意味です。 例えば #OBJ=aaa.o all: bbb.o   some_command # some comment とあったなら、 #OBJ=aaa.o は、make自身の動作等を設定する部分」であり、#以降がコメントと解釈され、無視されます。 対し、   some_command # some comment は、「in the text of commands」 なので、#以降もそのままシェルに渡されます。 つまり、シェルは 「some_command # some comment」 というコマンド列を実行します。 #以降をコメントとして無視した 「some_command 」 では無い、ということです。 ただし、その渡された側のシェルが、# をコメントとして解釈し「some_command 」として実行するかもしれません。 #をコメントとして解釈しないシェルなら「some_command # some comment」です。 コメントが_のシェルなら、実行されるのは「some」です。 これが「シュルに依存」の意味です。

flex1101
質問者

お礼

詳細な回答ありがとうございます。 「in the text of commands」の意味が分かりました。これにて、色々な文の理解がしやすくなりました。 make自身は#以降をコメントとするのでなく、shellに渡し、shell側ではコメントかどうか判断するということが、お二人の回答をいただきよく理解できました。 ありがとうございました。

その他の回答 (2)

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.2

>「コメントを始める」の意味がよくわかりませんでした。 「コメントを始める」=「以降がコメントとなる」 >#以降がコメントとなるので、むしろ「コメントを始める」のではないでしょうか。 いいえ。 別に # 以降がmakefileのコメントになるわけでは無いというのがその文の記述です。 #以降を取り除くこと無く、行全体がシェルに渡されます。 SHELL=/bin/echo all: <tab>aaaa bbbb #cccc ddddd というMakefileを試してみれば意味がわかります。

flex1101
質問者

お礼

再度の回答ありがとうございます。 #以降はmakefile自身はコメントとは判断せず、shellにそのまま渡すということなのですね。 サンプルコードも掲示いただき、理解が深まりました。 ありがとうございました。

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

同じ内容を説明し直してるだけでしょうね。 コマンドテキストの中では、#はmakeのコメントを始めない ということ。

flex1101
質問者

補足

回答ありがとうございます。 > コマンドテキストの中では、#はmakeのコメントを始めない 「コメントを始める」の意味がよくわかりませんでした。 #以降がコメントとなるので、むしろ「コメントを始める」のではないでしょうか。

関連するQ&A