cmake шаг стороннего проекта

Мы используем код поставщика в качестве стороннего проекта в нашем исходном коде. Код поставщика использует Makefile, для которого мы написали новый CMake add_custom_target для исходного кода поставщика.

Чтобы скопировать библиотеку из каталога build/lib конкретного производителя в Наш каталог двоичных файлов / библиотек CMAKE, я кодировал Step для копирования всех библиотек как

ExternalProject_Add_Step(CopyStep)

Однако я вижу, что всякий раз, когда я строю, CopyStep выполняется все время. Есть ли способ контролировать CopyStep для exec, только если есть изменения в библиотеке (что-то похожее на Make, когда нет изменения кода, исходный код не перестраивается).

Дайте мне знать, если есть какой-то другой способ, которым я мог бы сделать копию и т. Д.

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
    )
Другие вопросы по тегам