正如make clean删除makefile生成的所有文件一样,我想对CMake做同样的事情。我经常发现自己手动地在目录中删除像cmake_install这样的文件。cmake和CMakeCache.txt,以及CMakeFiles文件夹。
是否有像cmake clean这样的命令来自动删除所有这些文件?理想情况下,这应该遵循当前目录的CMakeLists.txt文件中定义的递归结构。
正如make clean删除makefile生成的所有文件一样,我想对CMake做同样的事情。我经常发现自己手动地在目录中删除像cmake_install这样的文件。cmake和CMakeCache.txt,以及CMakeFiles文件夹。
是否有像cmake clean这样的命令来自动删除所有这些文件?理想情况下,这应该遵循当前目录的CMakeLists.txt文件中定义的递归结构。
当前回答
这是一个非常旧的文件夹,但是如果你完全删除了cmake-build-debug文件夹,当你使用cmake编译时,它会自动创建一个新的cmake-build-debug文件夹,里面有你需要的所有东西。尤其适用于CLion。
其他回答
我同意外部构建是最好的答案。但是当你必须在源代码内构建的时候,我写了一个Python脚本,可以在这里使用,它:
运行“make clean” 在顶级目录中删除特定的cmake生成的文件,例如CMakeCache.txt 对于每个包含CMakeFiles目录的子目录,它会删除CMakeFiles, Makefile, cmake_install.cmake。 删除所有空子目录。
简单地发布rm CMakeCache.txt也适用于我。
当然,外部构建是Unix makefile的首选方法,但如果您使用的是其他生成器,如Eclipse CDT,它更喜欢您构建内源。在这种情况下,您需要手动清除CMake文件。试试这个:
find . -name 'CMakeCache.txt' -o -name '*.cmake' -o -name 'Makefile' -o -name 'CMakeFiles' -exec rm -rf {} +
或者,如果你已经通过shop -s globstar启用了globstar,试试这个不那么恶心的方法:
rm -rf **/CMakeCache.txt **/*.cmake **/Makefile **/CMakeFiles
试着使用: cmake——clean-first path-of-CMakeLists.txt-file -B output-dir
-clean-first:先建造目标,然后再建造。 (只清洁,使用-目标清洁。)
我在谷歌上搜索了大约半个小时,我想到的唯一有用的东西是调用find实用程序:
# Find and then delete all files under current directory (.) that:
# 1. contains "cmake" (case-&insensitive) in its path (wholename)
# 2. name is not CMakeLists.txt
find . -iwholename '*cmake*' -not -name CMakeLists.txt -delete
此外,确保在此之前调用make clean(或您正在使用的任何CMake生成器)。
:)