2

我有一个像这样组织的大型预编译 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::libA, Project0::libB,Project1::libC等。

这一切都很好,但我不确定如何处理我的 FindProjectX.cmake 文件中的依赖项的依赖项。我可以find_package(Project1 REQUIRED COMPONENTS libC)从 FindProject0.cmake 打电话吗?

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

4

0 回答 0