首页 > 解决方案 > 大型项目中与 cmake 的内部依赖关系

问题描述

我有一个项目,其中包含多个库,它们之间存在依赖关系。它看起来类似于:

project
+ libs
| + lib1
| + lib2
| + lib3
+ apps
| + app1
| + app2

我在不同的目标之间有依赖关系。例如,lib2取决于lib1lib3取决于lib2(注意这里的传递依赖)。应用程序主要依赖于任意数量的库。

我想CMakeLists.txt在项目根目录以及每个库和应用程序文件夹中都有一个。

我假设CMakeLists.txt我将主要add_subdirectory()用于包含其他CMakeLists.txt文件,但我不确定反映不同目标(其他库上的库和库上的应用程序)之间依赖关系的最佳实践是什么,因为它们位于同一级别。换句话说,我想知道它CMakeLists.txt的外观lib2lib3外观。

更新:

我设法找到了一个潜在的解决方案:人们建议使用add_dependencies(lib1 lib2). 是否应该在所有add_subdirectory()?

标签: cmake

解决方案


推荐阅读