Merge branch 'vs14-debug-enum-older-toolsets' into release

This commit is contained in:
Brad King 2016-03-07 10:09:33 -05:00
commit 15a4afe47a
1 changed files with 28 additions and 0 deletions

View File

@ -2698,6 +2698,34 @@ cmVisualStudio10TargetGenerator::ComputeLinkOptions(std::string const& config)
}
}
// Hack to fix flag version selection in a common use case.
// FIXME: Select flag table based on toolset instead of VS version.
if (this->LocalGenerator->GetVersion() >=
cmGlobalVisualStudioGenerator::VS14)
{
cmGlobalVisualStudio10Generator* gg =
static_cast<cmGlobalVisualStudio10Generator*>(this->GlobalGenerator);
const char* toolset = gg->GetPlatformToolset();
if (toolset &&
(cmHasLiteralPrefix(toolset, "v100") ||
cmHasLiteralPrefix(toolset, "v110") ||
cmHasLiteralPrefix(toolset, "v120")))
{
if (const char* debug = linkOptions.GetFlag("GenerateDebugInformation"))
{
// Convert value from enumeration back to boolean for older toolsets.
if (strcmp(debug, "No") == 0)
{
linkOptions.AddFlag("GenerateDebugInformation", "false");
}
else if (strcmp(debug, "Debug") == 0)
{
linkOptions.AddFlag("GenerateDebugInformation", "true");
}
}
}
}
this->LinkOptions[config] = pOptions.release();
return true;
}