16

I am a big fan of the C++ Core Guidelines and I like to follow them in all projects I work on, so I enabled the following option in my project template in Visual Studio 2017:

The C++ Core Check project option

This tool is great and helps me write better code, but I simply cannot figure out how to make it only analyze my files. Whenever my project has a dependency such as Boost or OpenCV, I will get plastered with a wall of warnings:

C++ Core Check warnings on dependencies

These dependencies are added through vcpkg, however, the same thing happens when adding them manually with C/C++ > General > Additional Include Directories.

Is there any way to only make these warnings apply to project files, and not all included files?

Michael Smith
  • 1,271
  • 1
  • 8
  • 31
  • 1
    Did you see [this answer](https://stackoverflow.com/a/44640171/9478968)? –  Apr 02 '18 at 18:00

1 Answers1

10

As mentioned in the comments, right after the following section in your .vcxproj near the end of the file:

<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
  <ImportGroup Label="ExtensionTargets">
</ImportGroup>

The problem may be solved by adding the following after the section mentioned above:

<PropertyGroup Condition="'$(Language)'=='C++'">
  <CAExcludePath>$(QTDIR)\include;.\GeneratedFiles;$(CAExcludePath)</CAExcludePath>
</PropertyGroup>

Furthermore, if you are using vcpkg, which was the case in my situation, you will need to add the following element to the CAExcludePath:

$(VcpkgRoot)include

This will ensure that all headers from any packages will not be analyzed.

Michael Smith
  • 1,271
  • 1
  • 8
  • 31
  • Not sure why you have `QTDIR` there. This seems like it comes from https://stackoverflow.com/a/44640171/9478968, but that question was tagged `qt`. This question isn't. – MSalters Jul 27 '20 at 13:25