findFoo.cmake с транзитивными зависимостями - PullRequest
2 голосов
/ 31 января 2020

У меня есть большая предварительно скомпилированная база кода 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.

...