当包含头文件的文件不在根项目文件夹中时,如何包含它
How to include a header file when the file that is including it is not in the root project folder?
我正在努力学习如何在C++中更好地组织项目及其文件。
我的简单测试项目似乎只有在main.cpp(和main.exe)位于根项目文件夹中时才能工作。以下是我想要尝试设置的方式。
- 项目
- .vscode
- c_cpp_properties.json
- 收割台
- header.h
- 主要
- main.cpp
- main.exe
- .vscode
main.cpp内部,我有#include "headers/header.h"
当我试图用这个设置编译它时,我得到了这个错误fatal error: headers/header.h: No such file or directory
我想知道,当以下安装程序(子文件夹中没有main.cpp)编译并运行良好(没有更改任何代码)时,为什么这不起作用。
- 项目
- .vscode
- c_cpp_properties.json
- 收割台
- header.h
- main.cpp
- main.exe
- .vscode
我正在使用带有C/C++和C/C++编译-运行扩展的Visual Studio代码(如果相关)。
编辑:
将其更改为"../headers/header.h"
确实有效,但我想知道如果不使用../
,我该如何做到这一点。
如果我理解正确,我只需要在c_cpp_properties.json中的includePath中添加一些内容。以下是"includePath"
部分现在的样子。
"includePath": [
"${workspaceFolder}/**"
],
所以我想我只需要让它像一样
"includePath": [
"${workspaceFolder}/**",
"..."
],
我到底应该在...
部分放些什么?
.../Project/main/main.cpp
,但在您的第二个示例中是../Project/main.cpp
。所以现在很明显为什么在第二种情况下看headers/header.h
的路径是有效的,而不是第一种情况。
然而,如果您愿意,您当然可以将main.cpp
保留在main
目录中,您只需要设置INCLUDE_PATH
目录。如果您使用的是Makefile
,那么这将是一个简单的-I
标志添加,但由于您使用VS代码,您可能需要研究这个问题。很抱歉,我不能提供更详细的解决方案,我真的不熟悉VS代码环境。
相关文章:
- 如何在h文件中包含.o对象文件
- VS2017,C++包含目录与附加包含目录,子文件夹包含失败-但为什么
- 为什么您需要C++头文件的包含保护
- 包含在.cpp文件中包含在 .h 文件时包含
- CMake:我们可以为一组不形成可执行文件或库的特定文件指定包含目录吗?
- 如何在 C++ 的 .so 文件中包含库
- 在头文件上包含 cpp 文件是否有缺点?
- 我可以(不)在.cpp文件中包含哪些内容?
- 生成文件缺少包含路径 尽管路径存在并已定义
- 不能在其他文件中包含结构
- 如何比较文件中包含的下一个字符
- 如何检查每个头文件是否包含必需的包含文件?
- 使用 #pragma 一次,#ifndef 在同一文件中包含保护
- 在兼容的二进制文件中包含 CSV 文件
- .c文件应该包含它的.h文件已经包含的内容吗?
- #include 包含的头文件已包含的头文件是否常见?
- 如何告诉qmake在从dbus xml生成文件时包含标头
- cmake - 何时在 CMakeLists.txt 文件中包含include_directories
- 修改生成文件以包含库并使用 C++11
- 如何在Android.bp文件中包含预构建的库