C++ 使用忍者建造系统,我可以清洁中间建造产品吗?

C++ 使用忍者建造系统,我可以清洁中间建造产品吗?,c++,c,cmake,ninja,C++,C,Cmake,Ninja,当我使用CMake生成树外忍者版本时,能够删除中间版本产品(即对象文件和静态库)将非常有用,以节省CI服务器上的磁盘空间。有什么方法可以做到这一点吗?有可能按照规则与忍者进行清理,但知道哪些规则生成中间产物不可能仅与忍者一起进行;相反,我们必须求助于shell脚本: grep "^rule.*\(_COMPILER_\|_STATIC_LIBRARY_\)" rules.ninja | \ cut -d' ' -f2 | xargs -n1 ninja -t clean -r 这会将r

当我使用CMake生成树外忍者版本时,能够删除中间版本产品(即对象文件和静态库)将非常有用,以节省CI服务器上的磁盘空间。有什么方法可以做到这一点吗?

有可能按照规则与忍者进行清理,但知道哪些规则生成中间产物不可能仅与忍者一起进行;相反,我们必须求助于shell脚本:

grep "^rule.*\(_COMPILER_\|_STATIC_LIBRARY_\)" rules.ninja | \
    cut -d' ' -f2 | xargs -n1 ninja -t clean -r
这会将rules.ninja文件中生成对象文件和静态库的规则变灰,然后对每个规则调用
ninja-tclean-r
,以执行实际的清理。Windows上的等效功能通过以下方式实现:

FOR /f "tokens=2" %%R IN ('findstr "_COMPILER_ _STATIC_LIBRARY_" rules.ninja') DO (
    ninja -t clean -r %%~R
)
这确实是一个黑客行为,但它为我们节省了大量的磁盘空间,所以值得记录,我想