Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(100)

Side by Side Diff: tools/gn/visual_studio_writer.cc

Issue 1723663006: GN: Fix Visual Studio project build command (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « tools/gn/visual_studio_writer.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "tools/gn/visual_studio_writer.h" 5 #include "tools/gn/visual_studio_writer.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <map> 8 #include <map>
9 #include <set> 9 #include <set>
10 #include <string> 10 #include <string>
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
172 const std::string& _label_dir_path, 172 const std::string& _label_dir_path,
173 const std::string& _config_platform) 173 const std::string& _config_platform)
174 : SolutionEntry(_name, _path, _guid), 174 : SolutionEntry(_name, _path, _guid),
175 label_dir_path(_label_dir_path), 175 label_dir_path(_label_dir_path),
176 config_platform(_config_platform) {} 176 config_platform(_config_platform) {}
177 177
178 VisualStudioWriter::SolutionProject::~SolutionProject() = default; 178 VisualStudioWriter::SolutionProject::~SolutionProject() = default;
179 179
180 VisualStudioWriter::VisualStudioWriter(const BuildSettings* build_settings, 180 VisualStudioWriter::VisualStudioWriter(const BuildSettings* build_settings,
181 Version version) 181 Version version)
182 : build_settings_(build_settings) { 182 : build_settings_(build_settings),
183 ninja_path_output_(build_settings->build_dir(),
184 build_settings->root_path_utf8(),
185 EscapingMode::ESCAPE_NINJA_COMMAND) {
183 const Value* value = build_settings->build_args().GetArgOverride("is_debug"); 186 const Value* value = build_settings->build_args().GetArgOverride("is_debug");
184 is_debug_config_ = value == nullptr || value->boolean_value(); 187 is_debug_config_ = value == nullptr || value->boolean_value();
185 config_platform_ = "Win32"; 188 config_platform_ = "Win32";
186 value = build_settings->build_args().GetArgOverride(variables::kTargetCpu); 189 value = build_settings->build_args().GetArgOverride(variables::kTargetCpu);
187 if (value != nullptr && value->string_value() == "x64") 190 if (value != nullptr && value->string_value() == "x64")
188 config_platform_ = "x64"; 191 config_platform_ = "x64";
189 192
190 switch (version) { 193 switch (version) {
191 case Version::Vs2013: 194 case Version::Vs2013:
192 project_version_ = kProjectVersionVs2013; 195 project_version_ = kProjectVersionVs2013;
(...skipping 296 matching lines...) Expand 10 before | Expand all | Expand 10 after
489 492
490 project.SubElement( 493 project.SubElement(
491 "Import", 494 "Import",
492 XmlAttributes("Project", "$(VCTargetsPath)\\Microsoft.Cpp.targets")); 495 XmlAttributes("Project", "$(VCTargetsPath)\\Microsoft.Cpp.targets"));
493 project.SubElement( 496 project.SubElement(
494 "Import", 497 "Import",
495 XmlAttributes("Project", 498 XmlAttributes("Project",
496 "$(VCTargetsPath)\\BuildCustomizations\\masm.targets")); 499 "$(VCTargetsPath)\\BuildCustomizations\\masm.targets"));
497 project.SubElement("ImportGroup", XmlAttributes("Label", "ExtensionTargets")); 500 project.SubElement("ImportGroup", XmlAttributes("Label", "ExtensionTargets"));
498 501
502 std::string ninja_target = GetNinjaTarget(target);
503
499 { 504 {
500 scoped_ptr<XmlElementWriter> build = 505 scoped_ptr<XmlElementWriter> build =
501 project.SubElement("Target", XmlAttributes("Name", "Build")); 506 project.SubElement("Target", XmlAttributes("Name", "Build"));
502 build->SubElement( 507 build->SubElement(
503 "Exec", 508 "Exec", XmlAttributes("Command",
504 XmlAttributes("Command", "call ninja.exe -C $(OutDir) $(ProjectName)")); 509 "call ninja.exe -C $(OutDir) " + ninja_target));
505 } 510 }
506 511
507 { 512 {
508 scoped_ptr<XmlElementWriter> clean = 513 scoped_ptr<XmlElementWriter> clean =
509 project.SubElement("Target", XmlAttributes("Name", "Clean")); 514 project.SubElement("Target", XmlAttributes("Name", "Clean"));
510 clean->SubElement( 515 clean->SubElement(
511 "Exec", 516 "Exec",
512 XmlAttributes("Command", 517 XmlAttributes("Command",
513 "call ninja.exe -C $(OutDir) -tclean $(ProjectName)")); 518 "call ninja.exe -C $(OutDir) -tclean " + ninja_target));
514 } 519 }
515 520
516 return true; 521 return true;
517 } 522 }
518 523
519 void VisualStudioWriter::WriteFiltersFileContents(std::ostream& out, 524 void VisualStudioWriter::WriteFiltersFileContents(std::ostream& out,
520 const Target* target) { 525 const Target* target) {
521 out << "<?xml version=\"1.0\" encoding=\"utf-8\"?>" << std::endl; 526 out << "<?xml version=\"1.0\" encoding=\"utf-8\"?>" << std::endl;
522 XmlElementWriter project( 527 XmlElementWriter project(
523 out, "Project", 528 out, "Project",
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after
744 base::CompareCase::SENSITIVE)) { 749 base::CompareCase::SENSITIVE)) {
745 folder->parent_folder = parents.back(); 750 folder->parent_folder = parents.back();
746 break; 751 break;
747 } else { 752 } else {
748 parents.pop_back(); 753 parents.pop_back();
749 } 754 }
750 } 755 }
751 parents.push_back(folder); 756 parents.push_back(folder);
752 } 757 }
753 } 758 }
759
760 std::string VisualStudioWriter::GetNinjaTarget(const Target* target) {
761 std::ostringstream ninja_target_out;
762 DCHECK(!target->dependency_output_file().value().empty());
763 ninja_path_output_.WriteFile(ninja_target_out,
764 target->dependency_output_file());
765 return ninja_target_out.str();
766 }
OLDNEW
« no previous file with comments | « tools/gn/visual_studio_writer.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698