我怎样才能让 CMake 只允许 "make clean"ing 一个目标?

How can I get CMake to allow for "make clean"ing just one target?

我有一个项目使用 CMake 生成 Makefile,然后使用 (GNU) make 构建。

在我的项目中,CMakeLists.txt 定义了两个目标 - 但在 Makefile 生成后 makeing 时只有其中一个被构建(例如使用 EXCLUDE_FROM_DEFAULT_BUILD 属性).

我希望能够清理(使用 make)构建其中一个目标时使用的文件,而不是用于构建第二个目标的文件。

我该怎么做?

我看到另外两个选项:

  1. 使用为每个目标生成的内部 cmake_clean.cmake 脚本 - 不幸的是,不能通过 make 从根路径直接访问这些脚本。例如,如果您有一个名为 foo 的目标,您可以这样写:

     cmake -P CMakeFiles/foo.dir/cmake_clean.cmake
    
  2. 使用 ninja 而不是 make 可以调用的生成器

     ninja -t clean foo