组织源代码(C++)

Organizing source (C++)

本文关键字:C++ 源代码      更新时间:2023-10-16

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

所有模块(A、B、C和D)都使用公共实用程序(模块E)。每个模块由几个文件组成。我真的很想组织模块,这样每个模块都有自己的名称空间,并且源文件位于不同的目录中(即强调组织中的模块性)。

在每个文件中定义名称空间并不重要。但我希望使用某种源树,其中每个模块的#include文件将在其自己的命名空间中包括所有其他模块。

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

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

你知道如何组织这些文件以实现模块化吗?

请原谅我,并建议是否有其他StackOverflow附属公司更适合这个问题。我的项目正在运行,但它比需要的要混乱得多!

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

这是错误的方法。即使A在模块级别上依赖于E,也不一定意味着A内的所有组件都依赖于E内的所有部件,并且不应通过include强制执行。

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

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