cmake: рекурсивно собрать все связанные общие библиотеки - PullRequest
2 голосов
/ 26 мая 2020

Можно ли написать в cmake функцию, которая будет рекурсивно собирать все связанные библиотеки (типа SHARED)?

Это функция, которая идет только на один уровень и добавляет *-NOTFOUND объекты в список, которых я бы хотел избежать.

get_target_property(libs App LINK_LIBRARIES)
set(list_libs ${libs})
foreach(lib ${libs})
    get_target_property(ls ${lib} LINK_LIBRARIES)
    list(APPEND list_libs ${ls})
endforeach()

message(STATUS "Linked libraries: ${list_libs}")

Если возможно, это сделает развертывание довольно тривиальным. Потому что у нас будет окончательный список dll, которые нужно скопировать в папку исполняемой или зависимой библиотеки.

foreach(lib ${list_libs})
COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:${lib}> $<TARGET_FILE_DIR:App>
endforeach()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...