1

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

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

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

感谢您的任何意见。

4

1 回答 1

2

我已经在我的一些代码中做到了这一点。在我的底部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查看我的完整文件。

于 2013-04-30T07:25:40.167 回答