C++模板库的目录结构

Directory structure for a C++ template library

我正在创建一个 C++ 模板库,我打算将其用作许多未来项目的重要组成部分。由于库的大小,我将代码分为多个文件,其中一些是前向声明和原型,一些是“实现”。库中的一些 类 是严格内部的,不打算被用户(即未来的我)直接访问。

编译后的 C++ 库似乎(或多或少)有一个公认的标准目录结构(关于该主题的不错的线程:Directory structure for a C++ library)但在模板库的情况下,所有文件在技术上都是 headers.

是否有可接受的模板库目录结构?我是否应该将 public header 放入 /include 并将私有 headers 和“实现”放入 /src ?

P.S。 如果这是常识,我很抱歉。如果我遗漏了解决此主题的资源,请随时 link 它,此线程可以立即关闭。

有一些 header 仅库的示例,它们将所有内容都放在 include 目录中。当涉及到私有实现时,可能会有一个 sub-directory 或命名空间让消费者清楚地了解这个意图(类似于 internaldetailsimpl)。

添加伴随的命名空间应该有助于将这些实现细节与用户预期使用的模板分开。

我马上就能想到的一个例子是Cereal

作为用户,当使用仅 header 的库时,我希望只需将 YourProject/include 添加到我的包含路径中即可使用您的模板。