【问题标题】: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
)