1

我想以一种便于我和其他人将它们包含在其他项目中的方式组织一组 C++ 头文件。将这些项目中的更改合并到原始文件中也应该很容易。
目前,我有大约 30 个头文件、大约 20 个带有单元测试的文件和大约 15 个带有使用示例的文件,这些文件在 Doxygen 文档中被部分引用。代码主要在 Linux 上开发,但应该是平台无关的(至少在理论上)。

我最初组织文件的想法是这样的(假设项目的名称是xyz):

xyz/
xyz/examples/
unit_tests/
README

然后,在另一个项目中使用它的最简单方法是将xyz/子目录复制到您自己的源目录并在您的项目中包含这样的头文件:

#include "xyz/something.h"

这样做的一个优点是不需要在您的构建系统中添加路径,它应该无需更改即可工作。

git submodule将文件放在子目录中的一个缺点是在和中更难使用git subtree。特别是,git subtree split如果仅将存储库的子目录用作子树,则不起作用。(然而,这可能会成为另一个 SO 问题......)

我查看了其他几个(仅标头)存储库,通常它们的文件位于include/include/xyz/src/仅位于存储库的根目录中。

您的经验是什么,您的首选布局是什么?
你会建议什么工作流程?
你会使用git submodulegit subtree完全不同的东西吗?

4

1 回答 1

0

将您的公共 API 头文件作为单独的存储库。然后你可以将它作为一个子模块包含在你的库代码和测试中。此外,您的图书馆用户会将其作为子模块包含在他们的存储库中。

于 2012-08-16T20:46:03.890 回答