具有传递依赖项的findFoo.cmake

时间:2020-01-31 11:39:56

标签: c++ cmake dependency-management cmake-modules

我有一个这样组织的大型预编译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依赖于libC)。请注意,没有外部依赖性。一切都在这里,在这些文件夹中。

我正在考虑编写一堆FindProjectX.cmake脚本,该脚本将为每个项目创建一个cmake包,每个库包含一个导入的目标。我最终会导入诸如Project0::libAProject0::libBProject1::libC等的目标。

这很好,但是我不确定如何处理FindProjectX.cmake文件中依赖项的依赖项。我可以只从FindProject0.cmake调用find_package(Project1 REQUIRED COMPONENTS libC)吗?

请注意,我有许多此类库和项目。我打算编写一个python脚本来自动生成这些FindProjectX.cmake脚本。

0 个答案:

没有答案