包括来自不同目录的头文件?

时间:2011-12-23 23:22:35

标签: c++ include

我正在研究一个项目,我一直不知道如何从不同的目录导入文件。以下是我的一些文件的组织方式:

-stdafx.h
-core/
-->renderer.cpp
-shapes/
-->sphere.h
-->sphere.cpp

如何从stdafx.h访问shapes/sphere.hcore/renderer.cpp

3 个答案:

答案 0 :(得分:9)

有很多方法。例如,您可以#include "../stdafx.h"。更常见的是将项目的根添加到包含路径并使用#include "shapes/sphere.h"。或者在include path中有一个带标题的单独目录。

答案 1 :(得分:2)

执行此操作的一种(不好)方法是包含要包含在#include行中的头文件的相对路径。例如:

包括" headers / myHeader.h"

包括" ../ moreHeaders / myOtherHeader.h"

这种方法的缺点是它要求您在代码中反映您的目录结构。如果您更新了目录结构,则代码将不再起作用。

更好的方法是告诉您的编译器或IDE您在其他位置有一堆头文件,这样当它在当前目录中找不到时会看到它们。这通常可以通过在IDE项目设置中设置“包含路径”或“搜索目录”来完成。

在Visual Studio中,您可以在解决方案资源管理器中右键单击项目,然后选择“属性”,然后选择“VC ++目录”选项卡。从这里,您将看到一行名为“包含目录”。在那里添加您的包含目录。

在Code :: Blocks中,转到Project菜单并选择“Build Options”,然后选择“Search directories”选项卡。在那里添加您的包含目录。

使用g ++,您可以使用-I选项指定备用包含目录。

g ++ -o main -I / source / includes main.cpp

这种方法的好处在于,如果您更改了目录结构,则只需更改单个编译器或IDE设置,而不是每个代码文件。

答案 2 :(得分:1)

您可以使用相对路径:

#include "../stdafx.h"
#include "../shapes/sphere.h"

或将您的项目目录添加到您的编译器包含路径并像正常一样引用它们:

#include "stdafx.h"
#include "shapes/sphere.h"

您可以使用/I command line option添加路径或在项目设置中设置路径。