如何重新定义目标"干净"?

jon*_*wak 5 cmake

我的CMmake构建脚本包含"外部本机makefile".Target-all与"外部制作"有依赖关系.这种依赖是由CMake完成的.

CMakeLists.txt
       |____( add_custom_target )_____ GNU make file
Run Code Online (Sandbox Code Playgroud)

但Target-clean没有依赖"外部make clean".我不能让依赖清洁 - 外部清洁.我可以创建一个新的自定义目标(例如,newClean),它具有"clean"和"external make clean"的依赖关系.但是"干净"和"新清洁"存在.这可能是混乱.

我该如何解决这个问题?

Sil*_*ker 8

我能想到三种可能的解决方案:

  1. 确保自定义命令中的所有输出文件都列在OUTPUT行中.然后它们将作为清理的一部分被删除(此CLEAN_NO_CUSTOM属性与属性一起提及).

  2. 将额外文件添加到ADDITIONAL_MAKE_CLEAN_FILESdirectory属性.

  3. 创建一个新的自定义命令,该命令调用普通的清理目标和另一个make文件.例:

    add_custom_target(really-clean
      COMMAND "$(CMAKE)" --build "${CMAKE_BINARY_DIR}" clean
      COMMAND cd "${CMAKE_BINARY_DIR}/otherproject" && make clean
    )
    
    Run Code Online (Sandbox Code Playgroud)