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

Method GetFileSetDirectories

Source/cmExportBuildCMakeConfigGenerator.cxx:171–217  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

169}
170
171std::string cmExportBuildCMakeConfigGenerator::GetFileSetDirectories(
172 cmGeneratorTarget* gte, cmFileSet* fileSet, cmTargetExport const* /*te*/)
173{
174 std::vector<std::string> resultVector;
175
176 auto configs =
177 gte->Makefile->GetGeneratorConfigs(cmMakefile::IncludeEmptyConfig);
178 auto directoryEntries = fileSet->CompileDirectoryEntries();
179
180 for (auto const& config : configs) {
181 cm::GenEx::Context context(gte->LocalGenerator, config);
182 auto directories =
183 fileSet->EvaluateDirectoryEntries(directoryEntries, context, gte);
184
185 bool const contextSensitive =
186 std::any_of(directoryEntries.begin(), directoryEntries.end(),
187 EntryIsContextSensitive);
188
189 auto const& type = fileSet->GetType();
190 // C++ modules do not support interface file sets which are dependent upon
191 // the configuration.
192 if (contextSensitive && type == "CXX_MODULES"_s) {
193 auto* mf = this->LG->GetMakefile();
194 std::ostringstream e;
195 e << "The \"" << gte->GetName() << "\" target's interface file set \""
196 << fileSet->GetName() << "\" of type \"" << type
197 << "\" contains context-sensitive base directory entries which is not "
198 "supported.";
199 mf->IssueMessage(MessageType::FATAL_ERROR, e.str());
200 return std::string{};
201 }
202
203 for (auto const& directory : directories) {
204 auto dest = cmOutputConverter::EscapeForCMake(
205 directory, cmOutputConverter::WrapQuotes::NoWrap);
206
207 if (contextSensitive && configs.size() != 1) {
208 resultVector.push_back(
209 cmStrCat("\"$<$<CONFIG:", config, ">:", dest, ">\""));
210 } else {
211 resultVector.emplace_back(cmStrCat('"', dest, '"'));
212 }
213 }
214 }
215
216 return cmJoin(resultVector, " ");
217}
218
219std::string cmExportBuildCMakeConfigGenerator::GetFileSetFiles(
220 cmGeneratorTarget* gte, cmFileSet* fileSet, cmTargetExport const* /*te*/)

Callers

nothing calls this directly

Calls 15

GetGeneratorConfigsMethod · 0.80
strMethod · 0.80
push_backMethod · 0.80
emplace_backMethod · 0.80
cmStrCatFunction · 0.70
cmJoinFunction · 0.70
beginMethod · 0.45
endMethod · 0.45
GetTypeMethod · 0.45
GetMakefileMethod · 0.45

Tested by

no test coverage detected