web-dev-qa-db-ja.com

GNU MakeでCMakeを使用する:正確なコマンドを表示するにはどうすればよいですか?

CMakeをGNU Makeと共に使用し、すべてのコマンドを正確に表示したい(たとえば、コンパイラーの実行方法、すべてのフラグなど)。

GNU makeには--debugがありますが、他に役立つオプションはありますか? CMakeは、デバッグ目的で生成されたMakefileに追加のフラグを提供しますか?

231
Nils

Makeを実行するときに、VERBOSE=1を追加して、完全なコマンド出力を表示します。例えば:

cmake .
make VERBOSE=1

または、-DCMAKE_VERBOSE_MAKEFILE:BOOL=ONをcmakeコマンドに追加して、生成されたMakefileから永続的な冗長コマンド出力を得ることができます。

cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON .
make

興味のない出力を減らすために、次のオプションを使用できます。オプションCMAKE_RULE_MESSAGES=OFF[33%] Building C object ...のような行を削除しますが、--no-print-directoryは、make[1]: Entering directorymake[1]: Leaving directoryのような行を除外して現在のディレクトリを出力しないようにmakeに指示します。

cmake -DCMAKE_RULE_MESSAGES:BOOL=OFF -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON .
make --no-print-directory
317
richq

CMakeLists.txtファイルのオプションを次のように設定すると便利です。

set(CMAKE_VERBOSE_MAKEFILE ON)
61
James Hirschorn

CMake GUIを使用する場合、詳細ビューにスワップすると、オプションはCMAKE_VERBOSE_MAKEFILEと呼ばれます。

7
SteveL

または、次のようにシェルでVERBOSE環境変数をエクスポートするだけです:export VERBOSE=1

3
makerj

-ggdbフラグが存在することを確認するために、同様のことを試みていました。

クリーンなディレクトリでmakeを呼び出し、探しているフラグをgrepします。 debugではなく、ggdbを探しています。

make VERBOSE=1 | grep debug

-ggdbフラグはあいまいなので、コンパイルコマンドのみが表示されました。

2