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


281

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

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


2
または、いくつかの検索用語を追加するには、実行された完全で冗長なコマンドラインを非表示にし、色付きの簡潔なパーセント出力のみを表示する方法。
ulidtko '17年


mkdir build; cd build; cmake .. --debug-output; make VERBOSE=1
Parasrish 2018年

回答:


369

makeを実行したら、追加VERBOSE=1してコマンドの完全な出力を確認します。例えば:

cmake .
make VERBOSE=1

または-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON、生成されたMakefileからの永続的な冗長コマンド出力のためにcmakeコマンドに追加できます。

cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON .
make

あまり興味のない出力を減らすために、以下のオプションを使用したい場合があります。このオプションCMAKE_RULE_MESSAGES=OFFは、[33%] Building Cオブジェクトのような行を削除します...--no-print-directorymakeは、make[1]: Entering directoryおよびなどの行を除外して現在のディレクトリを出力しないように指示しmake[1]: Leaving directoryます。

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

12
これらのソリューションは、非常に冗長になり、多くのCMakeを出力し、興味のない内部を作成します。コンパイルとリンクのコマンドのみを表示する方法はありますか(つまり、通常は問題のデバッグに関連するものです)。おそらく、失敗したコマンドのみを表示します。
Tronic

Googleの上位ヒットでは、「g ++コマンドラインのみを表示したい場合は、可能であれば、詳細なMakefileに関連してgrep&Co.を使用することをお勧めしますおそらく、cmakeの経験が豊富な開発者には、別のアドバイスがあるでしょう。
Trevor Boyd Smith

7
ちなみに、これをサポートするプラットフォームを使用している場合cmake -GNinja . ; ninja -vは、綿毛が最小限の非常に詳細な出力が表示されます。
richq 2015年

10
単線...cmake --build . -- VERBOSE=1
letmaik

どうやら、cmakeを実行した後、ビルドディレクトリにmakefileが見つからないため、新しいバージョンのcmakeで作業している必要があります...
DrumM

80

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

set(CMAKE_VERBOSE_MAKEFILE ON)

3
自分のプロジェクトではこれを行わないでください。すべてのユーザーが詳細なビルド出力を見たいとは限りません。ライブラリを利用するすべての人にこれを強制しないでください。CMAKE_VERBOSE_MAKEFILE デフォルトではオフにしておく必要があり、デバッグの目的で必要な場合はユーザーが選択できます。
Ela782

3
そう?複数の開発者がいて、それらに選択肢を与えたい場合は、いつでもキャッシュ変数として追加できます。しかし、はい、プロジェクトのリリースバージョンでは、デフォルトでオフにする必要があります。
James Hirschorn、2018年

1
cmakeはGUIから呼び出されるため、これはqt.io QtCreatorを使用する場合に最適なオプションです。ありがとうございました!
Grant Rostig

9

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


8

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


GUIを使用せずにテキストファイルでこのオプションを設定するにはどうすればよいですか?
osgx 2013

4

私は-ggdb旗が存在することを確認するために同様のことを試みていました。

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

make VERBOSE=1 | grep debug

この-ggdbフラグはあいまいなので、コンパイルコマンドだけがポップアップしました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.