我们在源代码中将供应商代码用作第三方项目。供应商代码使用Makefile,为此我们为供应商源代码编写了新的CMake add_custom_target。
要将库从供应商特定的build / lib目录复制到我们的CMAKE二进制/库目录,我编写了将所有库复制为
的步骤ExternalProject_Add_Step(CopyStep)
但是我看到每当构建时,CopyStep就会一直执行。只有在库中有更改的情况下,才有什么方法可以控制CopyStep的执行(类似于Make,只要没有代码更改,就不会重建源代码)。
让我知道是否还有其他方法可以进行复制等。
答案 0 :(得分:0)
要使外部项目的步骤仅在某些文件被更改时才重新执行,请在其中添加 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
)