附加包含目录在“项目属性→配置属性→C/C++→常规→附加包含目录”中设置,用于指定#include搜索路径;需注意路径分隔用分号、支持宏如$(ProjectDir)、须匹配当前配置(Debug/Release),且CMake项目中该设置无效。

附加包含目录在哪设置
在 Visual Studio 的 C++ 项目中,附加包含目录 是控制 #include 搜索路径的关键配置,它对应 MSVC 编译器的 /I 参数。不是在全局设置里改,而是必须进具体项目的属性页:右键项目 →「属性」→「配置属性」→「C/C++」→「常规」→「附加包含目录」。
填路径时要注意什么
填错路径格式是编译报 C1083: 无法打开包括文件 的最常见原因。关键点:
- 用反斜杠
\或正斜杠/都可以,但不能混用(比如C:\libs\inc\正确,C:/libs\inc可能被部分版本解析失败) - 路径末尾加不加
\都行,VS 会自动标准化 - 支持宏,比如
$(ProjectDir)include、$(SolutionDir)third_party\fmt\include—— 这比写死绝对路径更安全 - 多个路径用分号
;分隔,不要用逗号或换行 - 相对路径是相对于项目目录(.vcxproj 所在位置),不是源文件位置
为什么改了没生效
改完不生效,大概率是以下情况之一:
- 改的是「Debug」配置,但你在「Release」下编译 —— 务必确认顶部「配置」下拉框选对了(或点「全部配置」统一设)
- 路径里用了未定义的宏(比如写了
$(MYLIB_DIR)却没在「属性页 → 通用属性 → 常规 → 宏」里定义) - 头文件本身有拼写错误,或者目标路径下实际没有该头文件(建议在资源管理器里手动导航验证)
- 项目启用了「使用预编译头」且
stdafx.h或pch.h早于你的#include,导致搜索路径尚未生效 —— 把#include移到预编译头之后试试
和 CMake 项目混用时怎么处理
如果你用 VS 打开的是 CMake 项目(即根目录有 CMakeLists.txt),那么「附加包含目录」这个设置根本不会生效 —— CMake 项目由 target_include_directories() 控制,VS 只是前端显示。此时修改 附加包含目录 属于无效操作。
立即学习“C++免费学习笔记(深入)”;
正确做法是在 CMakeLists.txt 中添加:
target_include_directories(my_target PRIVATE ${CMAKE_SOURCE_DIR}/include)
然后重新生成 CMake 缓存(右键解决方案 →「重新生成 CMake 缓存」)。否则哪怕界面里填得再全,编译器也完全无视。
路径层级深、宏嵌套多、又夹着 CMake 的时候,最容易漏掉这个前提判断。


















