From 1d04d2ce3609da4c4f8d59ccfabd8848a6e765d4 Mon Sep 17 00:00:00 2001 From: Brad King Date: Tue, 14 Feb 2017 11:15:08 -0500 Subject: VS: Refactor parsing of CMAKE__STANDARD_LIBRARIES Parse the value as a command line string just as the MS CRT would. This makes the VS generator behavior consistent with how the string is used by the Ninja and Makefile generators. --- Source/cmVisualStudio10TargetGenerator.cxx | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx index a7edc95..a60222e 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx @@ -2784,22 +2784,10 @@ bool cmVisualStudio10TargetGenerator::ComputeLinkOptions( std::string standardLibsVar = "CMAKE_"; standardLibsVar += linkLanguage; standardLibsVar += "_STANDARD_LIBRARIES"; - std::string libs = + std::string const libs = this->Makefile->GetSafeDefinition(standardLibsVar.c_str()); - // Remove trailing spaces from libs - std::string::size_type pos = libs.size() - 1; - if (!libs.empty()) { - while (libs[pos] == ' ') { - pos--; - } - } - if (pos != libs.size() - 1) { - libs = libs.substr(0, pos + 1); - } - // Replace spaces in libs with ; - std::replace(libs.begin(), libs.end(), ' ', ';'); std::vector libVec; - cmSystemTools::ExpandListArgument(libs, libVec); + cmSystemTools::ParseWindowsCommandLine(libs.c_str(), libVec); cmComputeLinkInformation* pcli = this->GeneratorTarget->GetLinkInformation(config.c_str()); -- cgit v0.12 From 8ba6dc362dd1c5b073c68f8a873a91ddd2743e34 Mon Sep 17 00:00:00 2001 From: Brad King Date: Tue, 14 Feb 2017 11:18:51 -0500 Subject: VS: Place CMAKE__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. --- Source/cmVisualStudio10TargetGenerator.cxx | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx index a60222e..f084e19 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx @@ -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 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 libVec; std::vector 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 -- cgit v0.12