改善CMake构建目录的清理

时间:2013-04-27 07:46:57

标签: build cmake organization

我正在试图找到一种方法来配置我的CMake构建,以包含一个“干净”的目标,它将删除构建目录中的所有文件,除了名为“modules”的子目录中的文件。

为什么,你可能会问?好吧,我们的代码库目前基于makefile,我将它切换到cmake。我目前的设置是在顶层添加一个cmake /目录,其中包含模块/子文件夹中所需的宏。然后人们可以从cmake /目录运行“cmake ..”。

通常当我在我的CMakeLists.txt中进行更改时,我希望绝对确定以前的cmake运行都没有影响力,所以在cmake /目录中从头开始是好的。我不能只是rm -rf ./,因为有所需的模块/目录。如果可能的话,我想要一种简单的“cmake clean”恢复方式。

感谢您的任何意见。

1 个答案:

答案 0 :(得分:1)

我在我的一些代码中已经这样做了。在CMakeLists.txt的底部,我添加了一行

# Add a distclean target to the Makefile
ADD_CUSTOM_TARGET(distclean COMMAND ${CMAKE_COMMAND} -P ${CMAKE_SOURCE_DIR}/distclean.cmake)

然后我在顶级目录中添加一个名为distclean.cmake的文件。此文件包含我要删除的文件循环:

# Loop over the directories/files and delete each one
FOREACH(D ${DEL}) # DEL is a list of the directories and files to delete
    IF(EXISTS ${D})
        FILE(REMOVE_RECURSE ${D})
    ENDIF()
ENDFOREACH()

您可以查看我的完整distclean.cmake文件here