MCPcopy Create free account
hub / github.com/Kitware/CMake / WriteTargetClean

Method WriteTargetClean

Source/cmGlobalNinjaGenerator.cxx:2079–2199  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2077}
2078
2079void cmGlobalNinjaGenerator::WriteTargetClean(std::ostream& os)
2080{
2081 // -- Additional clean target
2082 bool additionalFiles = this->WriteTargetCleanAdditional(os);
2083
2084 // -- Default clean target
2085 // Write rule
2086 {
2087 cmNinjaRule rule("CLEAN");
2088 rule.Command = cmStrCat(this->NinjaCmd(), " $FILE_ARG -t clean $TARGETS");
2089 rule.Description = "Cleaning all built files...";
2090 rule.Comment = "Rule for cleaning all built files.";
2091 WriteRule(*this->RulesFileStream, rule);
2092 }
2093
2094 // Write build
2095 {
2096 cmNinjaBuild build("CLEAN");
2097 build.Comment = "Clean all the built files.";
2098 build.Outputs.emplace_back();
2099
2100 for (std::string const& config : this->GetConfigNames()) {
2101 build.Outputs.front() = this->BuildAlias(
2102 this->NinjaOutputPath(this->GetCleanTargetName()), config);
2103 if (this->IsMultiConfig()) {
2104 build.Variables["TARGETS"] = cmStrCat(
2105 this->BuildAlias(
2106 this->NinjaOutputPath(GetByproductsForCleanTargetName()), config),
2107 ' ', this->NinjaOutputPath(GetByproductsForCleanTargetName()));
2108 }
2109 build.ExplicitDeps.clear();
2110 if (additionalFiles) {
2111 build.ExplicitDeps.push_back(this->BuildAlias(
2112 this->NinjaOutputPath(this->GetAdditionalCleanTargetName()),
2113 config));
2114 }
2115 for (std::string const& fileConfig : this->GetConfigNames()) {
2116 if (fileConfig != config && !this->EnableCrossConfigBuild()) {
2117 continue;
2118 }
2119 if (this->IsMultiConfig()) {
2120 build.Variables["FILE_ARG"] = cmStrCat(
2121 "-f ",
2122 this->NinjaOutputPath(
2123 cmGlobalNinjaMultiGenerator::GetNinjaImplFilename(fileConfig)));
2124 }
2125 this->WriteBuild(*this->GetImplFileStream(fileConfig), build);
2126 }
2127 }
2128
2129 if (this->EnableCrossConfigBuild()) {
2130 build.Outputs.front() = this->BuildAlias(
2131 this->NinjaOutputPath(this->GetCleanTargetName()), "all");
2132 build.ExplicitDeps.clear();
2133
2134 if (additionalFiles) {
2135 for (auto const& config : this->CrossConfigs) {
2136 build.ExplicitDeps.push_back(this->BuildAlias(

Callers 1

WriteBuiltinTargetsMethod · 0.95

Calls 15

NinjaCmdMethod · 0.95
BuildAliasMethod · 0.95
NinjaOutputPathMethod · 0.95
GetCleanTargetNameMethod · 0.95
WriteBuildMethod · 0.95
GetImplFileStreamMethod · 0.95
GetConfigFileStreamMethod · 0.95
GetDefaultFileStreamMethod · 0.95
emplace_backMethod · 0.80

Tested by

no test coverage detected