| Index: tools/gn/visual_studio_writer.cc
|
| diff --git a/tools/gn/visual_studio_writer.cc b/tools/gn/visual_studio_writer.cc
|
| index 7748fbe19df46326e53f19630d2b23ee04b7f568..fc4e6974cae631c0ab8cce12d37e27464001775e 100644
|
| --- a/tools/gn/visual_studio_writer.cc
|
| +++ b/tools/gn/visual_studio_writer.cc
|
| @@ -179,7 +179,10 @@ VisualStudioWriter::SolutionProject::~SolutionProject() = default;
|
|
|
| VisualStudioWriter::VisualStudioWriter(const BuildSettings* build_settings,
|
| Version version)
|
| - : build_settings_(build_settings) {
|
| + : build_settings_(build_settings),
|
| + ninja_path_output_(build_settings->build_dir(),
|
| + build_settings->root_path_utf8(),
|
| + EscapingMode::ESCAPE_NINJA_COMMAND) {
|
| const Value* value = build_settings->build_args().GetArgOverride("is_debug");
|
| is_debug_config_ = value == nullptr || value->boolean_value();
|
| config_platform_ = "Win32";
|
| @@ -496,12 +499,14 @@ bool VisualStudioWriter::WriteProjectFileContents(
|
| "$(VCTargetsPath)\\BuildCustomizations\\masm.targets"));
|
| project.SubElement("ImportGroup", XmlAttributes("Label", "ExtensionTargets"));
|
|
|
| + std::string ninja_target = GetNinjaTarget(target);
|
| +
|
| {
|
| scoped_ptr<XmlElementWriter> build =
|
| project.SubElement("Target", XmlAttributes("Name", "Build"));
|
| build->SubElement(
|
| - "Exec",
|
| - XmlAttributes("Command", "call ninja.exe -C $(OutDir) $(ProjectName)"));
|
| + "Exec", XmlAttributes("Command",
|
| + "call ninja.exe -C $(OutDir) " + ninja_target));
|
| }
|
|
|
| {
|
| @@ -510,7 +515,7 @@ bool VisualStudioWriter::WriteProjectFileContents(
|
| clean->SubElement(
|
| "Exec",
|
| XmlAttributes("Command",
|
| - "call ninja.exe -C $(OutDir) -tclean $(ProjectName)"));
|
| + "call ninja.exe -C $(OutDir) -tclean " + ninja_target));
|
| }
|
|
|
| return true;
|
| @@ -751,3 +756,11 @@ void VisualStudioWriter::ResolveSolutionFolders() {
|
| parents.push_back(folder);
|
| }
|
| }
|
| +
|
| +std::string VisualStudioWriter::GetNinjaTarget(const Target* target) {
|
| + std::ostringstream ninja_target_out;
|
| + DCHECK(!target->dependency_output_file().value().empty());
|
| + ninja_path_output_.WriteFile(ninja_target_out,
|
| + target->dependency_output_file());
|
| + return ninja_target_out.str();
|
| +}
|
|
|