我来自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 ++项目的正确方法(或者至少是一种不会引起麻烦的方法)是什么?
谢谢!
答案 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
目录下创建与命名空间对应的子文件夹。