文件系统上的C ++组织

时间:2011-09-18 18:59:13

标签: c++ visual-studio-2010 organization

我来自Java / AS3 / Javascript背景,其中我的所有类都被组织成有助于表示其功能的包。

在启动C ++项目时,我试图以大致相同的方式模仿这个文件系统结构,但我一直在遇到包含问题的问题。

目前我有一个src目录,里面有main.cpp文件。然后我有一些根目录和其他文件。这是一个例子:

的src

- > main.cpp中

- >窗口

----> window.h中

----> Window.cpp

main.cpp包含Window.h,语句为#include“Window.h”,一切都很好。但是,如果我重新启动Visual Studio,它会抱怨它找不到“Window.h”。

在查看一个开源项目时,我已经看到一些只是将所有源文件放在一个目录中而没有嵌套,以便于包含我想。有些将header和cpp文件分开。

在文件系统上组织一个大型C ++项目的正确方法(或者至少是一种不会引起麻烦的方法)是什么?

谢谢!

2 个答案:

答案 0 :(得分:1)

像你试图做的那样打破它是合理且容易完成的。

您只需设置项目的包含路径即可。在Visual Studio中,右键单击项目名称,然后单击“属性”。从那里,在左侧的树控件中,展开“C / C ++”,然后在树中选择“常规”。右边的第一个选项应该是“附加包含目录”。

你有几种选择:

您可以指定特定的包含目录(以分号分隔)。例如,如果你有文件夹“Window”和“Printing”,你可以输入:

..\Window;..\Printing

这将允许您轻松地从窗口包含文件并打印,如下所示:

#include <Window.h>     // from src/window
#include <Printing.h>   // from src/printing

上述方法有一些缺点,因为您可能很容易与您可能正在使用的其他库中的名称发生冲突,使包含ORDER非常重要。

更好的方法(在我看来)是将以下内容添加为包含路径:

..\

这将使其在查找包含时搜索父目录。这使您可以在包含路径中更加详细,如下所示:

#include <Window/Window.h>     // it's more clear where these are coming from
#include <Printing/Printing.h> // and much less likely to collide with other library
                               // header files

答案 1 :(得分:0)

遵循Java示例并按C ++命名空间排列源文件是有意义的。在/src目录下创建与命名空间对应的子文件夹。