何百ものターゲットがあり、そのうちのいくつかはビルドが成功するために重要ではなく (たとえば--keep-going
、make または-k 9000
ninja で使用している)、どの cmake ターゲットが失敗したかを把握する必要があるとします。
ビルド後のコマンドを使用add_custom_command()
すると、次のように名前を出力する cmake ターゲットに追加できます。
success: myTarget.dll
しかし、失敗はどうですか?
リンクが失敗した場合は、使用しているもの (ninja/make/msbuild) の詳細な出力を解析して、失敗したターゲットを確認できます。
ただし、翻訳単位のコンパイルが失敗した場合、特定のソース ファイルがコンパイルされず、どの cmake ターゲットが正確に失敗したかを特定するのが難しいという唯一のエラーが発生します。
私が思いついた唯一のことは、ビルドが失敗した後にこれを実行することです。ninja -nv
これにより、詳細なドライランが作成され、リンクコマンドをインターセプトして、そのように失敗した cmake ターゲットを解析できます...
他のアイデアはありますか?