我正在做一个项目,我们称之为
A
。它带有自己的CMakeLists.txt
。该项目还依赖于其他两个项目B
和C
。每个人都有自己的CMakeLists.txt
。项目C
也依赖于项目D
,它也有自己的CMakeLists.txt
。项目 B
、C
和 D
也是我的项目,它们作为单独的 GitHub 存储库驻留。他们制作了项目A
需要的一些库。我想配置 CMake
以允许我:
cd B/ && cmake . && make .
,然后再为A
做同样的事情。我的目标是像cd A/ && cmake . && make .
.build
目录中直接读取我的头文件和库。A
上工作,我希望它处于调试状态,但是 B
应该处于发布状态(并且与其他依赖项无关)。我已经尝试使用 Visual Studio Code 的
cmake-tools
。它创建了一个名为 build
的单独目录,但这意味着所有依赖项的树外编译并且它对除 A
之外的所有项目都失败。重新配置所有 CMakeLists.txt
以指向 build
是一项繁琐的工作,我仍然无法修复所有错误。我继承了 B
、C
和 D
的代码库,不想弄乱他们的 CMake 配置。
这是我当前的目录结构:
A/
├── build/
├── CMakeLists.txt
│
├── B/
│ └── CMakeLists.txt
├── C/
│ ├── CMakeLists.txt
│ └── D/
│ └── CMakeLists.txt
|
├── include/
├── src/
│ └── CMakeLists.txt
└── test/
└── CMakeLists.txt
我的目标可以实现吗?我的源代码树结构是否正确?我能做些什么来解决这些问题吗?