文件系统上的 C++ 组织

标签 c++ visual-studio-2010 organization

我有 Java/AS3/Javascript 背景,我的所有类都组织成包,以帮助表示它们的功能。

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

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

来源

-> main.cpp

->窗口

---->窗口.h

---->窗口.cpp

main.cpp 包含带有语句#include "Window.h"的 Window.h,一切都构建得很好。但是,如果我重新启动 Visual Studio,它会提示找不到“Window.h”。

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

在文件系统上组织大型 C++ 项目的正确方法是什么(或者至少是一种不会让人头疼的方法)?

谢谢!

最佳答案

像您尝试做的那样分解它是合理且容易完成的。

您只需设置项目的包含路径。在 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

关于文件系统上的 C++ 组织,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7463690/

相关文章:

c++ - C++中的字符串数组

c# - 十进制舍入扩展错误 - 无法使用实例引用访问;用类型名称限定它

c++ - 错误 C2027 : the gcc vs msvc case

node.js - 在express.js应用程序中组织游戏

c - C 中设备驱动程序的程序组织

c++ - 在不可见的分层窗口中半透明绘制

c++ - 在没有重载的情况下在 Union 上进行类型转换重载 +=

c++ - 分数 boolean 运算符

asp.net - 同一解决方案中的项目之间如何共享类?

python - 避免在 Django 应用程序中导入循环模型