2011-01-06 65 views
4

是否有任何文章或建议如何组织文件层次结构在您的项目?我感兴趣的是如何命名文件夹,以分离源代码和头文件。项目文件的树

我有用C++编写的项目,一个库和使用它的项目。库有许多组件,它们彼此分离,但其中一些使用通用文件。我应该为他们创建目录吗?

我很乐意听到所有建议。

+1

看看助推组织。这很合理。 – 2011-01-06 20:18:21

+0

重复这个? http://stackoverflow.com/q/1398445 – greyfade 2011-01-06 20:19:20

回答

3

将名称空间保存在单独的文件夹中很好。嵌套名称空间的方式与它们嵌套在项目中的方式相同。举例来说,如果您有:

namespace Foo{ namespace Bar{ } } 

,那么你会希望在Bar命名空间中的任何对象在

{Foo's parent folder}\Foo\Bar\{how you're organizing code at this level}

找到我们使用的包括头文件夹,一个来源。 cpp,单元测试的测试文件夹,以及编译码位的对象文件夹。我们将它们分开的原因是它可以更轻松地将代码打包到我们的脚本中。你总是会传递标题,你不会传递来源。 (Here是另一个SO线程讨论分隔标题/源文件,这是一个偏好的事情。)

这是一个link谷歌的风格指引,如果有帮助。

6

不要将标题和源文件拆分到不同的文件夹中。它只不过是添加一个额外的文件夹级别。

充其量它是完全无用的;如果您正在寻找“widget.h”,即使旁边有一个“widget.cpp”,也可以轻松地找到它。最糟糕的是它会相反的 - 例如当你编辑“widget.h”时,发现你还需要更新“widget.cpp”。

+2

是的。特别是因为文件列表通常按字母顺序排序,所以`widget.cpp`应该紧挨着它的对应部分。 – Maxpm 2011-01-06 20:09:18

2
  • 我没有单独的头从源头:它的浏览
  • 一个痛苦,我通常有子目录符合我的命名空间

    + Project root 
        + <project_name> // namespace project 
         - sub_dir_1 // namespace project::sub_dir_1 
         - sub_dir_2 // namespace project::sub_dir_2 
    
  • 我只添加“项目的根”作为一个附加包括路径,所以包含格式为:

    #include "project/sub_dir_1/a.h" 
    #include "project/sub_dir_2/b.h" 
    
  • 因为源和标头通常根据它们所包含的类命名,全合格命名可以从包括路径推断:

    project::sub_dir_1::aproject/sub_dir_1/a.h

  • a.c发现平凡包括a.h

  • 如果我必须(相对提供的路径)包括a.hb.h,我使用绝对路径(从project/根开始)