【问题标题】:cmake third party project stepcmake第三方项目步骤
【发布时间】:2019-02-16 16:35:47
【问题描述】:

我们在源代码中使用供应商代码作为第三方项目。 Vendor 代码使用 Makefile,为此我们为供应商源代码编写了新的 CMake add_custom_target。

要将库从供应商特定的 build/lib 目录复制到我们的 CMAKE 二进制/库目录,我编写了将所有库复制为的步骤

ExternalProject_Add_Step(CopyStep)

但是我发现,每当我构建时,CopyStep 都会一直执行。有没有办法控制 CopyStep 仅在库发生更改时才执行(类似于 Make,只要没有代码更改,就不会重建源代码)。

如果有其他方法可以复制等,请告诉我。

【问题讨论】:

    标签: cmake external-project


    【解决方案1】:

    要使 ExternalProject 的步骤仅在某些文件更改时重新执行,请为其添加 DEPENDS 选项:

    ExternalProject_Add_Step(extLibrary CopyStep
        COMMAND cp <BINARY_DIR>/lib/libext.a <...>
        DEPENDS <BINARY_DIR>/lib/libext.a
        )
    

    或者(例如,如果您不想列出您依赖的所有文件),您可以将该步骤作为构建步骤的一部分。为此,通过添加适当的命令修改ExternalProject_Add

    ExternalProject_Add(extLibrary
        ...
        BUILD_COMMAND make # Need to explicitely specify build command.
        COMMAND cp -r <BINARY_DIR>/lib <...> # Additional action for the build step
        )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-06
      • 1970-01-01
      • 1970-01-01
      • 2014-07-25
      • 1970-01-01
      • 1970-01-01
      • 2021-11-05
      • 1970-01-01
      相关资源
      最近更新 更多