0

私は研究室の他の誰かが書いた Makefile に取り組んでおり、trueいくつかのルールで呼び出されたコマンドを見つけました:

other_rule_A: YYY force_it
          ....
other_rule_B: XXX force_it
          ....

force_it:
          true

ここで true とはどういう意味ですか? サブシェルによって実行されるコマンドですか?false に置き換えるとどうなりますか? バイナリはtrueシェルによって呼び出されますか?

参考までに、Stackoverflow でこの別の質問を見つけました:なぜ makefiles はビルド スクリプトの一部として 'true' を持っていることがありますか? 、しかし、コマンドは、そのスレッドでカバーされているコマンドに関連しているとは思いません。

4

1 に答える 1

2

true/bin/true何もせずに成功を返すコマンド (通常は実行可能ファイルですが、多くの場合シェル組み込み) です。これを に置き換えるとfalseforce_it:ルールは常に失敗し、その時点で make プロセスが停止します。

このtrueアクションforce_it:がある場合とアクションのないルールがある場合の違いは、アクションがない場合force_it:は、メイクファイルの別の場所にアクションが追加された他のルールが存在する可能性があることです。アクションを使用trueすると、他のアクションが存在しないことがわかります。別のアクションを追加すると、make エラーが発生します。

于 2012-10-08T18:43:34.710 に答える