2016-11-17 79 views
4

我不熟悉C++,Java和Python背景,这些语言中的源代码文件布局非常标准。不过,我已经与C++项目发现,似乎有至少3种不同类型的布局:在同一个目录C++中的源代码布局

---main folder 
    | 
    --- file1.hpp 
    --- file2.hpp 
    --- code1.cpp 
    --- code2.cpp 

选项1个所有文件(.HPP和.cpp)选项2集管(.H .HPP)都在一个单一包括在src目录目录和实现(的.cpp)

---main folder 
    | 
    --- include 
    | --- file1.hpp 
    | --- file2.hpp 
    | 
    --- code 
     --- code1.cpp 
     --- code2.cpp 

选项3头ERS(.H .HPP)都在一个单一包括具有用于报头的不同的组(详细信息,IMPL)特定目录的目录,在一个单一的目录中的所有实施方式(的.cpp)

---main folder 
    | 
    --- include 
    | --- file1.hpp 
    | --- file2.hpp 
    | --- directory1 
    | | --- code1.hpp 
    | --- directory2 
    |  --- code2.hpp 
    | 
    --- code 
     --- code1.cpp 
     --- code2.cpp 

选项4类似于3但是实现也有它们的down目录。

---main folder 
    | 
    --- include 
    | --- file1.hpp 
    | --- file2.hpp 
    | --- directory1 
    |  --- code1.hpp 
    | --- directory2 
    |  --- code2.hpp 
    | 
    --- code 
    | --- code1.cpp 
    | --- code2.cpp 
    | --- directory1 
    | | --- code1.cpp 
    | --- directory2 
    |   --- code2.cpp 

我有标准的快速阅读,似乎无法找到对此事有任何建议或指导,也是一样从cppref文档。

是否有一些常见的布局?或者是这样的情况:“什么适合你”

+5

这完全是一个偏好问题。 – dandan78

+1

@ dandan78不是纯粹的实践。 –

+0

@πάνταῥεῖ做出选择时你会考虑哪些事项? –

回答

2

有没有一些常见的布局?

是的。将源文件和头文件分离到自己的目录是很常见的。这使得在没有源代码的情况下提供库变得更加容易。

5

这实际上只取决于项目的规模有多大,以及是否希望它用作库。如果它是一个图书馆,你一定会分开标题。对于一个普通的可执行项目,我通常首先将所有内容都包含在一个目录中,然后运行g ++编译这个项目,随着项目的增长,您添加一个makefile以及您不需要添加目录来保持整洁。在大多数非常大的项目中,我期望#4。但是,对于真正的小项目,#1,那就是如果他们甚至费力地将标题从实施中分离出来。

+0

所以我听到你说的是有一种规则,这是一个代码大小的函数。项目越小,布局越简单,项目越大,布局越具体。 –

+1

基本上。通过一个小型项目,实际上不需要特定的布局。但是一个很大的人能够导航到一个文件,希望有良好的逻辑, – pteronewone

+1

所以我不能编辑评论,那个提交得太早。基本上,是的。一个大型项目能够轻松导航到正确的文件是一个很大的优点。 – pteronewone