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


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

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

我怎么才能访问 stdafx.h 和 shapes/sphere.h 来自 core/renderer.cpp


7312
2017-12-23 23:22


起源

你用的是什么编译器? - Gabriel Southern
Microsoft Visual Studio 2010 - Stas Jaro
警惕以下建议使用 ../ 符号。看到 标头的相对路径有什么好处。 - Jonathan Leffler


答案:


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


9
2017-12-23 23:27



我怎么能添加一个根? - Stas Jaro
这是设置中的某个地方。戴夫指出,这是 /I 选项,但你正在寻找的东西可能是项目设置或其他任何东西,有一段时间没有看到Visual Studio。 - Michael Krelin - hacker


您可以使用相对路径:

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

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

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

你可以使用 /I  命令行选项 添加路径或在项目设置中设置路径。


1
2017-12-23 23:27



我该如何添加项目目录?对不起,我是C ++的新手 - Stas Jaro
我再也没有Visual Studio了(大约一年左右我没用过它)。然而, 这一页 有一个屏幕截图,显示了在项目设置中应该添加路径的确切位置。 - Dave Rager


执行此操作的一种(不好)方法是包含要包含在#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 /包括main.cpp

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


1
2017-12-05 10:32