我们正在使用供应商代码作为第三方项目在我们的源代码。供应商代码使用Makefile,我们为其为供应商源代码编写了新的CMake add_custom_target。
为了将库从特定于供应商的build/lib dir复制到CMAKE二进制/库dir,我编写了步骤,将所有库复制为
ExternalProject_Add_Step(CopyStep)
但是,我看到,每当我构建时,CopyStep总是被执行。是否只有在库中发生更改时才能控制CopyStep执行(类似于Make,只要没有代码更改,源代码就不会重新生成)。
让我知道,如果有任何其他方式,我可以复制等。
发布于 2018-09-12 07:38:14
要使ExternalProject的步骤仅在某个文件被更改时重新执行,请向其添加依赖选项:
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
)https://stackoverflow.com/questions/52288341
复制相似问题