You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置CMake以避免生成.ninja_log冗余文件?

CMake + Ninja 构建中clean目标无法彻底清理.ninja_log文件

作为开发者,我希望减少本地机器上的文件冗余。暂时搁置软件项目时,我常会执行make clean来清理项目目录、释放磁盘空间。

但执行cmake --build . --target clean时,CMake会遗留大量冗余文件。我通过在ADDITIONAL_CLEAN_FILES目录属性中添加冗长的文件名列表,解决了大部分冗余问题:

set_property(
    DIRECTORY .
    APPEND PROPERTY
    ADDITIONAL_CLEAN_FILES
    "html;${EXECUTABLE_OUTPUT_PATH};debug;debug.log;Makefile;build.ninja;.ninja_deps;Testing;CTestTestfile.cmake;CMakeFiles;CMakeCache.txt;cmake_install.cmake;conanbuildinfo.cmake;conanbuildinfo.txt;conaninfo.txt;graph_info.json;conan.lock"
)

不过在该列表中添加.ninja_log完全无效。CMake似乎会在每个任务(包括cmake --build . --target clean)执行后强制重新生成这个文件,导致所有CMake+Ninja项目都会遗留这个烦人的.ninja_log文件。

我还尝试声明自定义CMake清理目标来解决问题:

add_custom_target(clean-ninja-log COMMAND "${CMAKE_COMMAND}" -E rm -f .ninja_log)

但结果依旧,文件还是会被重新生成。

目前我可行的解决方案是用另一个构建系统包裹CMake,由外层构建系统通过C++标准库调用删除该文件。另一种类似方案是编写自定义的clean.ninja、clean.mk、clean.sh等脚本,但这类方案依赖rm或del命令,会限制可移植性,且需要维护多套脚本系统,十分繁琐。

我需要一个类似make clean的纯CMake解决方案,实现项目的完整清理。如果可能的话,比如有没有办法配置CMake停止在每个任务后执行ninja -t restat?


内容的提问来源于stack exchange,提问作者mcandre

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 21:47:07