我刚从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正常工作。
答案 0 :(得分:0)
我下载了您提供的示例并获得与您相同的结果,从.vcxproj文件中,'ClInclude'子元素位于'ItemGroup'元素下。此子元素指定C / C ++源文件的头文件的名称,我们可以从this知道它,并不意味着它将被自动编译。
我们仍然需要添加每个#include&#34; xxx.h&#34;的那些父文件夹。进入节点' AdditionalIncludeDirectories'就像你找到的那样。当您添加它,然后构建并检查.vcxproj文件时,添加包含目录信息应显示如下:
将这些必需的文件夹添加到节点'AdditionalIncludeDirectories'中将是一项巨大的工作,您需要搜索'xxx.h'并找到'ClInclude'下的记录,复制此文件的父文件夹并添加到节点' AdditionalIncludeDirectories'如上所述,然后重新加载项目并且intellisense工作正常。