【问题标题】:How do I redefine target "clean"?如何重新定义目标“干净”?
【发布时间】:2012-04-09 20:08:57
【问题描述】:

我的 CMmake 构建脚本包含一个“外部原生 makefile”。 Target-all 具有“外部制作”的依赖关系。这个依赖是由 CMake 产生的。

CMakeLists.txt
       |____( add_custom_target )_____ GNU make file

但 Target-clean 不依赖于“外部 make clean”。我无法使依赖项干净 - 外部使干净。我可以创建一个新的自定义目标(例如 newClean),它与“clean”和“external make clean”有依赖关系。但是存在“clean”和“newClean”。这可能是混乱。

我该如何解决这个问题?

【问题讨论】:

    标签: cmake


    【解决方案1】:

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

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

    2. 将额外文件添加到ADDITIONAL_MAKE_CLEAN_FILES 目录属性。

    3. 创建一个新的自定义命令,该命令调用正常的清理目标和您的其他 make 文件。示例:

      add_custom_target(really-clean
        COMMAND "$(CMAKE)" --build "${CMAKE_BINARY_DIR}" clean
        COMMAND cd "${CMAKE_BINARY_DIR}/otherproject" && make clean
      )
      

    【讨论】:

    • 旧版构建系统太大,无法通过 1 和 2 解决。我尝试选择选项 3。即使不清楚。谢谢你..
    • 列出的命令似乎没有正确运行正常的清理;使用 ''' COMMAND ${CMAKE_MAKE_PROGRAM} clean ''' 对我有用。
    猜你喜欢
    • 2011-09-20
    • 2018-10-18
    • 2011-02-07
    • 1970-01-01
    • 1970-01-01
    • 2015-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多