【问题标题】:cmake - preventing `make clean` from cleaning ExternalProjectcmake - 防止 `make clean` 清理 ExternalProject
【发布时间】:2011-06-06 23:59:59
【问题描述】:

我想知道是否有某种方法可以防止 cmake 中的 make clean 重新构建外部依赖项。我正在使用ExternalProject 构建第三方c++ 库,即使我使用make clean 也不必重新构建它们。

另一方面,我可能想创建一个新规则,比如make really-clean,它甚至可以清除依赖关系。有什么好的方法吗?

谢谢。

【问题讨论】:

    标签: build makefile cmake


    【解决方案1】:

    我假设您使用 ADD_CUSTOM_COMMAND、ADD_LIBRARY 或其他 ADD_* 来创建依赖文件。

    如果您的ExternalProject 有自己的目录,您可以将CMakeLists.txt 放在该目录中,您可以轻松地将以下内容放入该CMakeLists.txt

    SET_DIRECTORY_PROPERTIES(PROPERTIES CLEAN_NO_CUSTOM 1)
    

    所以那些依赖文件不会被清理。

    如果没有,您可能需要避免将外部依赖项作为输出文件。 例如,如果您使用

    ADD_CUSTOM_COMMAND(OUTPUT libdep
       COMMAND dep_gen_cmd
       ....
    )
    
    ADD_CUSTOM_COMMAND(OUTPUT prj
       ....
       DEPENDS libdep
    )
    

    那你需要改成:

    ADD_CUSTOM_TARGET(libdep_gen
          COMMAND dep_gen_cmd
          ...
    )
    
    ADD_CUSTOM_COMMAND(OUTPUT prj
         COMMAND test -e libdep || make libdep_gen
         ...
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-29
      • 1970-01-01
      • 2011-05-10
      • 2012-07-07
      • 1970-01-01
      • 1970-01-01
      • 2021-10-25
      相关资源
      最近更新 更多