我的C++项目越来越大.我们现在也开始使用cmake进行构建.我想将应用程序划分为库,以便它们可以链接进行测试,准备应用程序包等.现在我将我的代码分成如下库:
另一种方法是根据目录结构进行划分 - 每个目录有一个库.但是从我过去的经验来看,它导致了太多的库,然后在链接期间难以处理库依赖性.
这方面有什么最佳做法吗?
坐下来拿一张纸,决定你的图书馆架构.
该库应设计为一组级别.
每个图书馆都应代表其特定级别的完整工作.较低级别的事情通常会有较小的工作,但很多.更高级别的库应该重新发送完整的任务.即没有用于windows对象的lib和用于事件的lib.在这个级别,这里的工作是手动与窗口的所有交互(这包括它与事件的交互方式).
您似乎已经确定了一些合理的功能组.唯一一个看起来有点可疑的是io.如果你真的有一些通用的IO例程,可以提供真正的功能.但是,如果只是将IO分组为一堆不同的对象,那么我会废弃它(这完全取决于使用情况).
所以下一步是确定它们之间的关系.
至于使用目录结构.通常,一个目录中的所有内容都将出现在同一个库中,但这并不排除其他目录的可用性.我会避免将一半的类放在libA的目录中,另一半的类放在libB等中.