VS10: avoid warning, no nologo when verbose (#10587)

For prior versions of Visual Studio we would intentionally pass
"/nologo-" for "verbose makefiles" (CMAKE_VERBOSE_MAKEFILE ON)
when the caller did not already explicitly specify either /nologo
or /nologo-. And we still do. For the prior versions.

This had the side effect of always passing /nologo- for try_compile
operations because try_compile generates projects that have verbose
makefiles on.

However, starting with Visual Studio 10, the compiler emits
"cl ... warning D9035: option 'nologo-' has been deprecated"
when passed "/nologo-".

Therefore, this commit removes setting "/nologo-" for verbose
makefiles in the Visual Studio 10 case to avoid emitting a
warning for every single invocation of the compiler in a given
build.

With Visual Studio 10, we do not set this flag either way
and therefore, the generated project has no value for this
setting and gets Visual Studio's default value, which is
of course "/nologo", which does not produce a warning.

With Visual Studio 10, a caller can still force "/nologo-"
if desired by adding it explicitly to CMAKE_C_FLAGS or
CMAKE_CXX_FLAGS.
This commit is contained in:
David Cole 2010-12-17 15:43:16 -05:00
parent d11c70295b
commit 984acc884b
1 changed files with 6 additions and 8 deletions

View File

@ -85,17 +85,15 @@ void cmVisualStudioGeneratorOptions::SetVerboseMakefile(bool verbose)
// was not given explicitly in the flags we want to add an attribute
// to the generated project to disable logo suppression. Otherwise
// the GUI default is to enable suppression.
//
// Avoid this on Visual Studio 10 (and later!) because it results in:
// "cl ... warning D9035: option 'nologo-' has been deprecated"
//
if(verbose &&
this->Version != 10 &&
this->FlagMap.find("SuppressStartupBanner") == this->FlagMap.end())
{
if(this->Version == 10)
{
this->FlagMap["SuppressStartupBanner"] = "false";
}
else
{
this->FlagMap["SuppressStartupBanner"] = "FALSE";
}
this->FlagMap["SuppressStartupBanner"] = "FALSE";
}
}