Index: tools/gn/visual_studio_writer.cc |
diff --git a/tools/gn/visual_studio_writer.cc b/tools/gn/visual_studio_writer.cc |
index dec083753f79052cdc6a8a0ef80a75cfacf5d739..b0392b41eacd7d2dc6d2574e7218c0cbe1580602 100644 |
--- a/tools/gn/visual_studio_writer.cc |
+++ b/tools/gn/visual_studio_writer.cc |
@@ -64,8 +64,12 @@ struct SourceFileWriter { |
const SourceFile& source_file_; |
}; |
-const char kToolsetVersion[] = "v140"; // Visual Studio 2015 |
-const char kVisualStudioVersion[] = "14.0"; // Visual Studio 2015 |
+const char kToolsetVersionVs2013[] = "v120"; // Visual Studio 2013 |
+const char kToolsetVersionVs2015[] = "v140"; // Visual Studio 2015 |
+const char kProjectVersionVs2013[] = "12.0"; // Visual Studio 2013 |
+const char kProjectVersionVs2015[] = "14.0"; // Visual Studio 2015 |
+const char kVersionStringVs2013[] = "Visual Studio 2013"; // Visual Studio 2013 |
+const char kVersionStringVs2015[] = "Visual Studio 2015"; // Visual Studio 2015 |
const char kWindowsKitsVersion[] = "10"; // Windows 10 SDK |
const char kWindowsKitsIncludeVersion[] = "10.0.10240.0"; // Windows 10 SDK |
@@ -173,7 +177,8 @@ VisualStudioWriter::SolutionProject::SolutionProject( |
VisualStudioWriter::SolutionProject::~SolutionProject() = default; |
-VisualStudioWriter::VisualStudioWriter(const BuildSettings* build_settings) |
+VisualStudioWriter::VisualStudioWriter(const BuildSettings* build_settings, |
+ Version version) |
: build_settings_(build_settings) { |
const Value* value = build_settings->build_args().GetArgOverride("is_debug"); |
is_debug_config_ = value == nullptr || value->boolean_value(); |
@@ -182,6 +187,21 @@ VisualStudioWriter::VisualStudioWriter(const BuildSettings* build_settings) |
if (value != nullptr && value->string_value() == "x64") |
config_platform_ = "x64"; |
+ switch (version) { |
+ case Version::Vs2013: |
+ project_version_ = kProjectVersionVs2013; |
+ toolset_version_ = kToolsetVersionVs2013; |
+ version_string_ = kVersionStringVs2013; |
+ break; |
+ case Version::Vs2015: |
+ project_version_ = kProjectVersionVs2015; |
+ toolset_version_ = kToolsetVersionVs2015; |
+ version_string_ = kVersionStringVs2015; |
+ break; |
+ default: |
+ NOTREACHED() << "Not a valid Visual Studio Version: " << version; |
+ } |
+ |
windows_kits_include_dirs_ = GetWindowsKitsIncludeDirs(); |
} |
@@ -193,10 +213,11 @@ VisualStudioWriter::~VisualStudioWriter() { |
// static |
bool VisualStudioWriter::RunAndWriteFiles(const BuildSettings* build_settings, |
Builder* builder, |
+ Version version, |
Err* err) { |
std::vector<const Target*> targets = builder->GetAllResolvedTargets(); |
- VisualStudioWriter writer(build_settings); |
+ VisualStudioWriter writer(build_settings, version); |
writer.projects_.reserve(targets.size()); |
writer.folders_.reserve(targets.size()); |
@@ -290,7 +311,7 @@ bool VisualStudioWriter::WriteProjectFileContents( |
XmlElementWriter project( |
out, "Project", |
XmlAttributes("DefaultTargets", "Build") |
- .add("ToolsVersion", kVisualStudioVersion) |
+ .add("ToolsVersion", project_version_) |
.add("xmlns", "http://schemas.microsoft.com/developer/msbuild/2003")); |
{ |
@@ -333,7 +354,7 @@ bool VisualStudioWriter::WriteProjectFileContents( |
{ |
scoped_ptr<XmlElementWriter> locals = |
project.SubElement("PropertyGroup", XmlAttributes("Label", "Locals")); |
- locals->SubElement("PlatformToolset")->Text(kToolsetVersion); |
+ locals->SubElement("PlatformToolset")->Text(toolset_version_); |
} |
project.SubElement( |
@@ -580,7 +601,7 @@ void VisualStudioWriter::WriteSolutionFileContents( |
const base::FilePath& solution_dir_path) { |
out << "Microsoft Visual Studio Solution File, Format Version 12.00" |
<< std::endl; |
- out << "# Visual Studio 2015" << std::endl; |
+ out << "# " << version_string_ << std::endl; |
SourceDir solution_dir(FilePathToUTF8(solution_dir_path)); |
for (const SolutionEntry* folder : folders_) { |