【问题标题】:How can I get CMake to allow for "make clean"ing just one target?如何让 CMake 只允许“清理”一个目标?
【发布时间】:2016-11-08 12:33:43
【问题描述】:

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

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

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

我该怎么做?

【问题讨论】:

    标签: makefile build cmake resource-cleanup


    【解决方案1】:

    我看到另外两个选项:

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

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

       ninja -t clean foo
      

    【讨论】:

    • Re“为每个目标内部生成”:你的意思是“为每个目标内部生成”"internally""generated" 指的是什么(缺少一个或多个名词)? - 什么是内部生成的?
    • 不幸的是,这也会清除 foo 所依赖的任何目标。有没有办法只清理 foo ?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-15
    • 1970-01-01
    • 2021-06-02
    • 1970-01-01
    相关资源
    最近更新 更多