VS: Place CMAKE_<LANG>_STANDARD_LIBRARIES after other libraries

Make the VS generator consistent with the Ninja and Makefile generators
that place the libraries listed in this variable after other libraries
on the link command line.  These system libraries never depend on the
project libraries.
This commit is contained in:
Brad King committed 2017-02-14 11:21:08 -05:00
1 parent 1d04d2ce36
commit 8ba6dc362d
1 file changed
+8 -8
+8 -8
View File
@@ -2781,13 +2781,6 @@ bool cmVisualStudio10TargetGenerator::ComputeLinkOptions(
flags += " ";
flags += flagsConfig;
}
std::string standardLibsVar = "CMAKE_";
standardLibsVar += linkLanguage;
standardLibsVar += "_STANDARD_LIBRARIES";
std::string const libs =
this->Makefile->GetSafeDefinition(standardLibsVar.c_str());
std::vector<std::string> libVec;
cmSystemTools::ParseWindowsCommandLine(libs.c_str(), libVec);
cmComputeLinkInformation* pcli =
this->GeneratorTarget->GetLinkInformation(config.c_str());
@@ -2797,10 +2790,17 @@ bool cmVisualStudio10TargetGenerator::ComputeLinkOptions(
this->Name.c_str());
return false;
}
// add the libraries for the target to libs string
cmComputeLinkInformation& cli = *pcli;
std::vector<std::string> libVec;
std::vector<std::string> vsTargetVec;
this->AddLibraries(cli, libVec, vsTargetVec);
std::string standardLibsVar = "CMAKE_";
standardLibsVar += linkLanguage;
standardLibsVar += "_STANDARD_LIBRARIES";
std::string const libs =
this->Makefile->GetSafeDefinition(standardLibsVar.c_str());
cmSystemTools::ParseWindowsCommandLine(libs.c_str(), libVec);
linkOptions.AddFlag("AdditionalDependencies", libVec);
// Populate TargetsFileAndConfigsVec