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

如何让CMake仅删除空目录?

仅删除空目录的CMake实现方案

如果不想用递归删除的高风险操作,CMake本身没有直接提供仅删除空目录的命令,但可以通过以下两种方式实现:

  • 调用系统原生命令:直接借助shell的rmdir命令,它只删除空目录,非空时会报错退出。在CMake脚本里可以这么写:

    execute_process(COMMAND rmdir mydir
                    RESULT_VARIABLE rmdir_result
                    ERROR_VARIABLE rmdir_error)
    

    这样如果目录非空,rmdir不会执行删除,还能通过rmdir_result和rmdir_error获取执行状态和错误信息,避免误删。

  • CMake脚本判断目录是否为空:先遍历目录内容,确认为空后再删除。示例代码:

    file(GLOB_RECURSE dir_contents "${mydir}/*")
    if(NOT dir_contents)
        file(REMOVE_DIRECTORY "${mydir}")
    endif()
    

    这里用file(GLOB_RECURSE)获取目录下所有内容,判断为空后再调用file(REMOVE_DIRECTORY)删除(如果只需检查一级目录是否为空,把GLOB_RECURSE换成GLOB即可)。

另外你提到的cmake -E rm的-r和-R确实是同义词,二者都会触发递归删除行为,没有功能差异。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 20:10:01