【发布时间】:2019-02-08 10:15:21
【问题描述】:
我正在使用 cmake 构建我的项目。我能够在 linux 平台上生成 Makefile,因此也能够构建项目。
但是,当我想清理所有生成的文件时,我无法这样做。
我无法使用make clean 命令删除foo.c.gcno 和foo.c.d 类型的文件。
cmake 中是否有任何特定命令可以删除这些中间文件?
注意:我有不同的 Cmake-source 和 build 目录。我担心构建目录中生成的文件(*.c.gcno 和 *.d)。通过 make clean 命令清除所有其他文件(如 *.o 和 *.so)。
【问题讨论】:
-
不确定
.gcno文件,但.d文件包含依赖项,它们应该被CMake 正确处理(即在make clean上被删除)。展示您的项目(以minimal reproducible example 的形式)。 -
需要更多信息,例如:你是什么意思你不能删除它们? - 你的意思是
make clean没有删除它们还是你的意思是它由于某种原因(比如权限)而无法删除它们?什么错误(如果有的话)?可能您只需要将文件类型添加到清理列表中。我们需要更多信息,因为@Tsyvarev 提到示例代码总是有用的:) 注意:.gcno文件由 gnu 覆盖 (gcov) 编译选项生成(以防其他人徘徊)。 -
是的,'make clean' 不会删除那些(*.gcno 和 *.d)文件。我在执行 make clean 时没有收到任何错误,但是这些文件没有被删除,但是这些文件是在构建文件期间生成的。无论如何,我认为解决方案是在 CMakeLists.txt 添加自定义目标 distclean 。 cmake.org/pipermail/cmake/2003-June/003953.html