I Prefer Jim Developer James Schubert shares his code and his thoughts.

16Apr/12Off

C++ Global _CRT_SECURE_NO_WARNINGS

I became extremely annoyed by thousands of these messages while running MSBuild:

c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string.h(105) :
see declaration of 'strcpy' SomeFile.cpp(###):
warning C4996: 'strcpy': This function or variable may be unsafe.
Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS.
See online help for details.

I looked for the online help, which doesn't really exist for this specific warning. I did find the Security Features in the CRT article, but that was useless. Because I'm working on a shared project, I didn't want to manually add this #define to every project. The workaround is to add it to the *.user.props file.

Add the ItemDefinitionGroup node below to C:\Users\Jschubert\AppData\Local\Microsoft\MSBuild\v4.0\Microsoft.Cpp.Win32.user.props:

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0"
         xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ItemDefinitionGroup>
    <ClCompile>
      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
    </ClCompile>
    <ResourceCompile>
      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
    </ResourceCompile>
  </ItemDefinitionGroup>
</Project>

And there you have thousands of annoying warnings disappear.

Because MSBuild always includes %(PreprocessorDefinitions) when chaining PreprocessorDefinitions, you can add any number of defines here to exist globally on your machine only.

No related posts.

flattr this!

Tagged as: , Comments Off
Comments (0) Trackbacks (0)

Sorry, the comment form is closed at this time.

Trackbacks are disabled.