如何强制IntelliSense使用ClInclude目录?

时间:2017-01-18 11:40:08

标签: visual-studio visual-c++ include intellisense

我刚从Visual Studio Community 2015中的this repository设置了一个新项目。查看解决方案资源管理器,该存储库中的每个头文件都包含在项目中。

但是,打开文件(例如atomic.h)会导致大多数include指令以红色加下划线并带有鼠标悬停文本cannot open source file "..."。继续示例文件:

#ifndef ATOMIC_H
#define ATOMIC_H

#include "quantum.h" //underlined
#include <stddef.h>  //not underlined

然而,该文件肯定包含在项目中。可以在解决方案资源管理器中的“头文件”过滤器中看到它。它包含在.vcxproj文件中:

<ItemGroup>
    [...]
    <ClInclude Include="quantum\quantum.h" />
    [...]
</ItemGroup>

根据this answer,使用ClInclude标记包含文件应该足以让IntelliSense找到它,但它似乎不知道。

我可以通过在VC ++包含目录as mentioned here中单独包含每个文件夹和子文件夹来解决这个问题,但这需要几个小时。我也将双引号更改为有角度的括号,但这并没有帮助,我不想在我将要承诺的回购时做这个,当它为其他人工作时。

有什么方法可以将IntelliSense指向显然包含在项目中的所有文件吗?

没有必要使用MSVC构建,我只希望IntelliSense正常工作。

1 个答案:

答案 0 :(得分:0)

我下载了您提供的示例并获得与您相同的结果,从.vcxproj文件中,'ClInclude'子元素位于'ItemGroup'元素下。此子元素指定C / C ++源文件的头文件的名称,我们可以从this知道它,并不意味着它将被自动编译。

我们仍然需要添加每个#include&#34; xxx.h&#34;的那些父文件夹。进入节点' AdditionalIncludeDirectories'就像你找到的那样。当您添加它,然后构建并检查.vcxproj文件时,添加包含目录信息应显示如下: enter image description here

将这些必需的文件夹添加到节点'AdditionalIncludeDirectories'中将是一项巨大的工作,您需要搜索'xxx.h'并找到'ClInclude'下的记录,复制此文件的父文件夹并添加到节点' AdditionalIncludeDirectories'如上所述,然后重新加载项目并且intellisense工作正常。