正如make clean删除makefile生成的所有文件一样,我想对CMake做同样的事情。我经常发现自己手动地在目录中删除像cmake_install这样的文件。cmake和CMakeCache.txt,以及CMakeFiles文件夹。

是否有像cmake clean这样的命令来自动删除所有这些文件?理想情况下,这应该遵循当前目录的CMakeLists.txt文件中定义的递归结构。


当前回答

CMake 3。X

CMake 3.0及以上版本提供了一个“干净”的目标。这将删除任何工件,如目标文件、库文件、可执行文件、生成文件等。

cmake --build C:/foo/build/ --target clean

您还可以清理构建,然后运行构建。在1命令。

cmake --build C:/foo/build --clean-first

但是,这不会清理CMakeCache.txt或相关的CMakeFiles/目录。你可能想这么做。你只需要删除构建文件夹。

# Just delete the build folder
rm C:/foo/build -rf

# You can also just let git delete the build folder as well
git clean -d -f -x

CMake 3.24

现在在CMake 3.24中,你可以执行一个新的构建树配置。这将删除任何现有的CMakeCache.txt文件和相关的CMakeFiles/目录,并从头开始重新创建它们。

一般情况下,你需要这样做:

你想清除CMakeCache.txt中的缓存变量 您希望更改编译器 任何与CMake缓存相关的其他操作

cmake -B C:/foo/build --fresh

其他回答

这是一个非常旧的文件夹,但是如果你完全删除了cmake-build-debug文件夹,当你使用cmake编译时,它会自动创建一个新的cmake-build-debug文件夹,里面有你需要的所有东西。尤其适用于CLion。

当然,外部构建是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

简单地发布rm CMakeCache.txt也适用于我。

试着使用: cmake——clean-first path-of-CMakeLists.txt-file -B output-dir

-clean-first:先建造目标,然后再建造。 (只清洁,使用-目标清洁。)

当你在生成build文件时将-D参数传递给CMake,并且不想删除整个build/目录时:

简单地删除构建目录中的CMakeFiles/目录。

rm -rf CMakeFiles/
cmake --build .

这将导致CMake重新运行,并重新生成构建系统文件。您的构建也将从头开始。