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
)