首页 > 解决方案 > 如何正确指定 C++ 中的#include 路径以使您的程序可移植

问题描述

一段时间以来,我一直在为此苦苦挣扎,现在正在查找资料并提出问题,但我仍处于十字路口。到目前为止,我所做的以及根据我被告知的情况,我目前所处的位置是这样的:我在我的 repo 中添加了 2 个目录:src用于我的 .cpp 文件并包含用于我的 .hpp 文件。在我的包含目录中,我将所有 .hpp 文件直接放在文件夹中,就像在我的src目录中一样,我有几个子目录根据它们的用途对我的 .cpp 文件进行分组,例如\src\ValuationFunctions\MonteCarloFunctions\FunctionHelpers.

我已将所有的名称更改#include "header.h"#include "..\include\header.h". 这适用于我直接位于src文件夹中的主文件,但我现在发现它不适用于我在上面示例中的子目录中的 .cpp 文件,看来我必须导航回根文件夹正在做类似的事情#include "../../..\include\header.h",这显然不是要走的路。

我该如何完成这项工作,我是否在正确的轨道上?我已经将我的 repo 上传到 github ( https://github.com/OscarUngsgard/Cpp-Monte-Carlo-Value-at-Risk-Engine ),目标是让某人能够去那里,看看程序是如何的结构化,克隆 repo 并运行它(我想这就是目标始终是什么?或者,一些责任通常落在 repo 的克隆者身上以使其工作?)。

我正在使用 Windows 和 Visual Studios,非常感谢您的帮助。

标签: c++visual-studio

解决方案


在程序开发中,经常需要用到别人开发的工具包。一般来说,在Visual Studio中,很少使用源文件,大多使用声明类的头文件和链接库。如果要使用这些类,需要在文件中包含头文件的名称,例如#include "cv.h"。但这还不够,因为这个文件一般不在当前目录下,解决方法如下:

依次打开“项目-属性-配置属性-C/C++-通用-附加包含目录”,添加所有路径。

对于各种 IDE,我们可以做类似的操作来包含目录。所以对于克隆项目的人来说,修改项目包含的目录是很正常的。


推荐阅读