Visual Studio 2017:如何加速含仅头文件库的C++ IntelliSense解析?
解决Visual Studio中大型Header-Only库拖慢IntelliSense的问题
我太懂这种每次改完代码就得盯着VS加载条发呆的痛苦了——大型header-only库简直是IntelliSense的噩梦,每次都要把整个库重新解析一遍,慢到让人怀疑人生。不过别担心,确实有不少针对性的办法能帮你把这个库从IntelliSense的解析列表里踢出去,下面给你分享几个亲测有效的方案:
直接从IntelliSense中排除库路径
这是最直接的办法,告诉VS不要去解析这个库的任何文件:- 右键你的项目 → 选择「属性」
- 进入「配置属性」→「C/C++」→「高级」
- 找到「IntelliSense 排除」(英文版本是
Exclude from IntelliSense),点击编辑,把大型header-only库的根路径添加进去
这样设置后,IntelliSense就会完全跳过这个库的解析,速度会立刻提升一大截。
用预编译头缓存库的解析结果
既然是header-only库,我们可以把它的头文件打包进预编译头(PCH),让VS只解析一次,之后一直复用缓存:- 创建一个预编译头文件(比如
pch.h),在里面包含那个大型库的头文件 - 再创建一个对应的源文件(比如
pch.cpp),只包含pch.h - 回到项目属性:
- 配置属性→C/C++→预编译头,设置「预编译头」为「使用(/Yu)」,「预编译头文件」填
pch.h - 选中
pch.cpp,单独设置它的「预编译头」为「创建(/Yc)」
之后不管你怎么修改业务代码,IntelliSense都不会再重新解析库文件了,直接用PCH里的缓存结果。
- 配置属性→C/C++→预编译头,设置「预编译头」为「使用(/Yu)」,「预编译头文件」填
- 创建一个预编译头文件(比如
用条件编译跳过IntelliSense的库包含
如果你暂时不需要库相关的代码提示,可以用IntelliSense的专属宏来跳过包含:#ifndef __INTELLISENSE__ // 只有编译时才会包含这个库,IntelliSense解析时直接跳过 #include "your_big_header_only_lib.hpp" #endif这个方法的好处是完全不影响编译,只是牺牲了库相关的代码提示,适合你专注写业务代码的时候用。
调整IntelliSense的解析模式
最后可以配合调整VS的IntelliSense参数来进一步提速:- 打开「工具」→「选项」→「文本编辑器」→「C/C++」→「高级」
- 把「IntelliSense 模式」改成「快速(默认)」,或者如果你的VS版本支持,选「仅头文件快速」模式
- 也可以把「最大并行任务数」适当调大,让IntelliSense多开几个线程处理
这些方案里,前两个是最有效的,建议优先尝试「排除路径」+「预编译头」的组合,基本能解决大部分IntelliSense卡顿的问题。
内容的提问来源于stack exchange,提问作者Draex_
相关产品推荐
相关产品推荐

