在 C++ 的 include 语句中使用(相对)路径作为快捷方式
Using (relative) paths to shortcut in include statements in C++
我几天前开始用 C++ 编写代码。我使用 windows 作为我的 OS 来编写代码。我一直将所有 "well-written" 代码保存在一个位置。现在,我正在从事一个需要使用这些代码的项目。因此,我计划将我需要的那些文件作为头文件包含在我的项目中。但是,为了使我的项目 "self-contained",我创建了我需要的那些文件夹的快捷方式,并将它们保存在我的新项目的源文件夹中,并决定使用“include
”中快捷方式的相对路径我项目中的语句。
但是,我遇到了一个错误。有什么方法可以在 windows 中的 C++ include
语句中使用相对(或一般来说,绝对)快捷方式路径?
谢谢。
这实际上取决于如何包含header文件。
如果您包含 double-quotes,例如
#include "some_header_file.h"
那么相对路径就是从当前文件位置开始的。
如果您使用 angle-brackets,例如
#include <some_header_file.h>
那么相对路径是基于系统包含路径的。
您始终可以将路径添加到系统包含路径。如何执行取决于您的环境和编译器。如果您使用 Visual Studio,则进入项目属性对话框,在 "C/C++" / "General" 选项卡中有一个名为 "Additional Include Directories" 的字段,您可以在其中添加目录。 (这是针对 VS 2015 的,在其他版本上可能会有所不同。)
关于包含双引号。假设您的项目层次结构如下所示(在磁盘!):
Project
|-- Include
|-- Source
| `-- MoreSource
`-- Other
在 Project/Source
中你有你的源文件,如果其中一个想要包含来自 Project/Include
的 header 文件,那么它看起来像
#include "../Include/header.h"
现在,如果您在 Project/Source/MoreSource
中有一个源文件想要包含相同的 header 文件,它将是
#include "../../Include/header.h"
将 Project/Include
目录添加到系统 header 搜索路径可能会很有用。您仍然可以使用 double-quotes 来包含文件,因为如果找不到它们,预处理器也会搜索系统路径,但您不需要 "full" 相对路径。如果将 Project/Include
添加到系统 header 路径,则可以只写
#include "header.h"
或
#include <header.h>
不过要小心,如果您有一个与实际系统 header 文件同名的 header 文件,您可能会遇到一些麻烦。
来自 https://superuser.com/questions/253935/what-is-the-difference-between-symbolic-link-and-shortcut
您不能包含文件夹快捷方式,因为它是文件,而不是文件夹。
您可以阅读 create symbolic link on windows 的指南。
我几天前开始用 C++ 编写代码。我使用 windows 作为我的 OS 来编写代码。我一直将所有 "well-written" 代码保存在一个位置。现在,我正在从事一个需要使用这些代码的项目。因此,我计划将我需要的那些文件作为头文件包含在我的项目中。但是,为了使我的项目 "self-contained",我创建了我需要的那些文件夹的快捷方式,并将它们保存在我的新项目的源文件夹中,并决定使用“include
”中快捷方式的相对路径我项目中的语句。
但是,我遇到了一个错误。有什么方法可以在 windows 中的 C++ include
语句中使用相对(或一般来说,绝对)快捷方式路径?
谢谢。
这实际上取决于如何包含header文件。
如果您包含 double-quotes,例如
#include "some_header_file.h"
那么相对路径就是从当前文件位置开始的。
如果您使用 angle-brackets,例如
#include <some_header_file.h>
那么相对路径是基于系统包含路径的。
您始终可以将路径添加到系统包含路径。如何执行取决于您的环境和编译器。如果您使用 Visual Studio,则进入项目属性对话框,在 "C/C++" / "General" 选项卡中有一个名为 "Additional Include Directories" 的字段,您可以在其中添加目录。 (这是针对 VS 2015 的,在其他版本上可能会有所不同。)
关于包含双引号。假设您的项目层次结构如下所示(在磁盘!):
Project |-- Include |-- Source | `-- MoreSource `-- Other
在 Project/Source
中你有你的源文件,如果其中一个想要包含来自 Project/Include
的 header 文件,那么它看起来像
#include "../Include/header.h"
现在,如果您在 Project/Source/MoreSource
中有一个源文件想要包含相同的 header 文件,它将是
#include "../../Include/header.h"
将 Project/Include
目录添加到系统 header 搜索路径可能会很有用。您仍然可以使用 double-quotes 来包含文件,因为如果找不到它们,预处理器也会搜索系统路径,但您不需要 "full" 相对路径。如果将 Project/Include
添加到系统 header 路径,则可以只写
#include "header.h"
或
#include <header.h>
不过要小心,如果您有一个与实际系统 header 文件同名的 header 文件,您可能会遇到一些麻烦。
来自 https://superuser.com/questions/253935/what-is-the-difference-between-symbolic-link-and-shortcut
您不能包含文件夹快捷方式,因为它是文件,而不是文件夹。
您可以阅读 create symbolic link on windows 的指南。