1

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

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

ExternalProject_Add_Step(CopyStep)

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

让我知道是否有其他方法可以进行复制等。

4

1 回答 1

0

要使 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
    )
于 2018-09-12T07:38:14.420 回答