У меня есть большая предварительно скомпилированная база кода C ++, организованная так:
Project0/
libA/
include/
libA.so
libADependencies.txt -> depends on libB
libB/
include/
libB.so
libBDependencies.txt -> depends on libC
Project1/
libC/
include/
libC.so
libCDependencies.txt
...
Ни один из этих проектов не построен с использованием cmake.
Я пишу новый фрагмент кода, созданный с помощью cmake, который зависит от некоторых из этих библиотек.
Я знаю свои зависимости (допустим, здесь libA), и каждая зависимость также знает свою собственную зависимости (например, libA зависит от libB, libB зависит от lib C). Обратите внимание, что нет никаких внешних зависимостей. Все здесь, в этих папках.
Я думал о том, чтобы написать кучу скриптов FindProjectX.cmake, которые бы создавали пакет cmake для проекта, содержащий одну импортированную цель на библиотеку. Я бы в конечном итоге с импортированными целями, как Project0::libA
, Project0::libB
, Project1::libC
, и т. Д. c.
Это все хорошо, но я не уверен, как обрабатывать зависимости моих зависимостей в моих файлах FindProjectX.cmake. Могу ли я просто позвонить find_package(Project1 REQUIRED COMPONENTS libC)
из FindProject0.cmake?
Обратите внимание, что у меня много таких библиотек и проектов. Я намерен написать скрипт python для автоматической генерации этих скриптов FindProjectX.cmake.