0
私は、CMakeを使用してツリー構造の忍者ビルドを生成すると、CIサーバ上のディスク領域を節約するために、中間ビルド製品(オブジェクトファイルと静的ライブラリ)を削除できると便利です。これを行う方法はありますか?Ninjaビルドシステムを使用すると、中間ビルド製品をクリーニングできますか?
私は、CMakeを使用してツリー構造の忍者ビルドを生成すると、CIサーバ上のディスク領域を節約するために、中間ビルド製品(オブジェクトファイルと静的ライブラリ)を削除できると便利です。これを行う方法はありますか?Ninjaビルドシステムを使用すると、中間ビルド製品をクリーニングできますか?
忍者を使って規則で掃除することはできますが、忍者だけではどの規則が中間生成物を生成するかはわかりません。代わりに、我々はシェルスクリプトに頼らなければなりません:
grep "^rule.*\(_COMPILER_\|_STATIC_LIBRARY_\)" rules.ninja | \
cut -d' ' -f2 | xargs -n1 ninja -t clean -r
これは、オブジェクトファイルと静的ライブラリを生成し、それらのルールのrules.ninjaファイルをgrepする、その後、実際のクリーニングを行うために、各上ninja -t clean -r <rule>
を呼び出します。 Windows上で同等の機能を用いて達成される:
FOR /f "tokens=2" %%R IN ('findstr "_COMPILER_ _STATIC_LIBRARY_" rules.ninja') DO (
ninja -t clean -r %%~R
)
それは確かにハックですが、それは私たちにディスクスペースのかなりの量を節約し、文書化するので価値がある、私は思いました。