【问题标题】:CMakeLists - how to recursively delete directoriesCMakeLists - 如何递归删除目录
【发布时间】:2023-01-08 02:18:15
【问题描述】:

我怎样才能让cmake递归删除目录,相当于rm -rf

我尝试使用 file(REMOVE_RECURSE ,这听起来是对的,但我发现如果 test 为空或包含文件或空目录,file(REMOVE_RECURSE test/) 将删除名为 test 的目录。但是,如果 test 包含另一个包含文件的目录,则不会删除任何内容 - 它会被静默忽略。

cmake version 3.18.4

【问题讨论】:

  • 嗯。此行为似乎与文档不一致。我在 cmake 3.24 上,在源目录中的文件夹a/b/c 中创建了一个文件d,并且可以执行file(REMOVE_RECURSE a),它将删除所有 a、b、c 和 d。如果我在 a 之后添加尾部斜杠,如 a/,它也会执行此操作。你能做一个最小的可重现的例子吗?

标签: cmake cmakelists-options


【解决方案1】:

我发现 cmake 3.17.5 也一样。

我的修复是指定完整路径,如:

file(REMOVE_RECURSE ${CMAKE_BINARY_DIR}/test/)

【讨论】:

    猜你喜欢
    • 2014-05-12
    • 2018-10-15
    • 1970-01-01
    • 1970-01-01
    • 2010-10-21
    • 2016-04-18
    相关资源
    最近更新 更多