组织来源(C ++)

时间:2012-10-16 20:53:50

标签: c++ code-organization project-organization

对于科学项目,我有一个模板化分析工具(模块A),它使用一种统计测试(模块B)。分析工具(模块A)用于两类问题(模块C和D)。模块C和D定义了从不同文件类型序列化的功能。

所有模块(A,B,C和D)都使用通用实用程序(模块E)。每个模块由几个文件组成。我真的很想组织模块,以便每个模块都有自己的命名空间,因此源文件位于不同的目录中(即强调组织中的模块化)。

在每个文件中定义命名空间是微不足道的。但我希望使用某种源代码树,其中每个模块的#include文件将包含其自己命名空间内的所有其他文件。

我不太确定组织这个的好方法。我应该只为每个模块使用一个文件夹而使用相对路径使用#include吗?每个模块是否都有自己的git存储库,并编译为单个库文件,该文件位于指定的UNIX文件夹中(这需要真正安装项目才能运行)。

现在我正在使用gcc-4.7,make和emacs。

您是否了解如何组织这些文件以实现模块化?

请原谅我并建议是否有其他StackOverflow会员更适合这个问题。我的项目运行了,但它比实际需要的更糟糕了!

1 个答案:

答案 0 :(得分:1)

  

但我希望使用某种源代码树,其中每个模块的#include文件将包含其自己命名空间内的所有其他文件。

这是错误的做法。即使A在模块级别依赖于E,也不一定意味着A中的所有组件都依赖于E中的所有组件,并且您不应该强制通过包含。

包含应该是明确的(包括你真正需要的一切)和精确的(不包括你不依赖的任何东西)。

话虽这么说,我会在模块中组织代码,其中每个模块都有一个单独的目录。如果模块变得足够复杂以至于需要在子模块中进行拆分,那么您可以添加嵌套目录,但是单个两级层次结构就足够了。