我有一个像这样组织的大型预编译 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 脚本。