如何包含位于特定文件夹中的头文件?(C++)

Ben*_*Ben 5 c++ header file include

我想在 C++ 项目中包含特定的头文件 (MyHeader.h)。我的项目的解决方案位于文件夹中:

C:\\Projects\\MyProgram
Run Code Online (Sandbox Code Playgroud)

头文件位于文件夹中:

C:\\Projects\\MyProgram\\Files
Run Code Online (Sandbox Code Playgroud)

我尝试了以下代码行,但它不起作用。

#include <Files\MyHeader.h>
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法可以包含头文件,而无需在配置属性中添加“包含目录”的完整路径?

预先感谢您的任何帮助。:)

gld*_*ael 5

尝试这个

#include "files/myheader.h"
Run Code Online (Sandbox Code Playgroud)

files如果标头位于与当前源同一目录的文件夹中, 它将起作用。


如果您尝试包含第三方库而不是您自己的标头,我建议您将库标头保存在特定路径中(例如C:\Library\headers)。(如果有静态库,请将它们放在其他路径中,例如C:\Library\lib)。

  1. 在您的 Visual Studio C++ 项目中,转到View > Other Windows > Property Manager.

物业经理窗口

  1. 双击项目名称。你会看到一个像这样的对话框:

属性页编辑器

All Configurations如果您希望将更改应用到调试和发布配置,请确保在下拉列表中选择 。否则,只需选择您想要应用属性的配置。

  1. 转到左侧的“VC++ 目录”,然后选择右侧的“包含目录”,然后在文本框中输入以;.

如果您希望单独浏览每个路径,您还可以使用下拉菜单并使用对话框添加路径

编辑1 编辑2

  1. 以同样的方式添加库路径Library Directories
  2. 使用属性管理器窗格工具箱上的保存按钮保存更改。

然后,您将能够通过以下方式访问您添加的目录中包含的头文件:

#include <myheader.h>
Run Code Online (Sandbox Code Playgroud)

这种方法会有所帮助,因为标头保存在哪里并不重要。标头路径不是硬编码的。



Cas*_*Cow 5

始终搜索源文件的当前目录,但如果您使用尖括号,则会在包含路径之后搜索它,而如果您使用引号,它将是第一个搜索的目录。

你的解决方案或makefile/project文件的目录是无关紧要的,本地路径是相对于编译单元,即cpp文件的。

如果该 cpp 文件包含标头,则该标头拥有的包含内容是相对于其自身的,而不是相对于包含该标头的 cpp 文件。(如果不是的话,管理起来就很糟糕)。

理想情况下,您也应该在路径中使用正斜杠。

您此处实际的正确设置是将解决方案目录包含在您的搜索路径中。$(SolutionDir)我认为,如果是 Visual Studio,您可以使用宏来实现此目的。

这意味着,如果其他人要构建您的解决方案,他们可以将其放在他们选择的目录中,只要下面的结构相同,它仍然可以工作。

要在 cpp 文件中使用相对路径而不进行任何包含目录设置,您可能需要类似以下内容:

#include "../Files/MyHeader.h"
Run Code Online (Sandbox Code Playgroud)