50

これは同じ質問だと思います

実行前に cmake 印刷コマンドを作成する

しかし、その答えは私にはうまくいきません。その答えはcmakeでのみ機能すると思います。cmakeなしで機能するオプションは何ですか?

これらを試したことに注意してください

make VERBOSE=1 target
make target VERBOSE=1
VERBOSE=1 make target
make V=1 target
make target V=1
V=1 make target
make -V target
make -v target

それらのどれも機能しませんでした。

make -v が戻る

GNU Make 3.81
Copyright (C) 2006  Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.

This program built for x86_64-pc-linux-gnu
4

4 に答える 4

125

デフォルトでmakeは、すべてのコマンドを実行前に出力します。この印刷は、次のメカニズムのいずれかによって抑制できます。

  • @コマンドの先頭に追加することにより、ケースバイケースで
  • .SILENT 組み込みターゲットを追加することにより、グローバルに。
  • たとえば、 のように、フラグ-s--silentまたはのいずれかを使用してサブ make を呼び出すことにより、make プロセスのどこかで実行します。その瞬間から、コマンドのエコーはサブ make で抑制されます。--quiet$(MAKE) --silent -C someDir

makefile がコマンドを出力しない場合は、おそらくこれら 3 つのメカニズムのいずれかを使用しており、実際に makefile を調べてどれを確認する必要があります。

これらのエコー抑制メカニズムを回避するための回避策として、シェルを再定義してデバッグ モードを使用することができますmake SHELL="/bin/bash -x" target。他のシェルにも同様のオプションがあります。そのアプローチではmake、コマンドを出力するのではなく、シェル自体を出力します。

フラグ-nまたはを使用する--just-printと、エコー抑制メカニズムが無視され、実行する必要があると思われるすべてのコマンドが常に表示されますがmake、実際には実行されず、出力されるだけです。これは、実際に何が見られると期待できるかを把握するための良い方法かもしれません。

VERBOSE変数は に対して標準的な意味を持ちませんが、makemakefile がそれを解釈する場合のみです。

于 2012-06-13T12:45:00.000 に答える
0

私はこれがあなたが望むものだと思います:MAKE_VERBOSE=1ターゲットにする

于 2013-01-29T20:57:12.850 に答える