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

Method AddInterfaceDepends

Source/cmComputeTargetDepends.cxx:265–292  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

263}
264
265void cmComputeTargetDepends::AddInterfaceDepends(
266 size_t depender_index, cmGeneratorTarget const* dependee,
267 cmListFileBacktrace const& dependee_backtrace, std::string const& config,
268 std::set<cmLinkItem>& emitted)
269{
270 cmGeneratorTarget const* depender = this->Targets[depender_index];
271 if (cmLinkInterface const* iface =
272 dependee->GetLinkInterface(config, depender)) {
273 for (cmLinkItem const& lib : iface->Libraries) {
274 // Don't emit the same library twice for this target.
275 if (emitted.insert(lib).second) {
276 // Inject the backtrace of the original link dependency whose
277 // link interface we are adding. This indicates the line of
278 // code in the project that caused this dependency to be added.
279 cmLinkItem libBT = lib;
280 libBT.Backtrace = dependee_backtrace;
281 this->AddTargetDepend(depender_index, libBT, true, false, emitted);
282 this->AddInterfaceDepends(depender_index, libBT, config, emitted);
283 }
284 }
285 for (cmLinkItem const& obj : iface->Objects) {
286 if (cmSourceFile const* o = depender->Makefile->GetSource(
287 obj.AsStr(), cmSourceFileLocationKind::Known)) {
288 this->AddObjectDepends(depender_index, o, emitted);
289 }
290 }
291 }
292}
293
294void cmComputeTargetDepends::AddInterfaceDepends(
295 size_t depender_index, cmLinkItem const& dependee_name,

Callers 1

CollectTargetDependsMethod · 0.95

Calls 9

AddTargetDependMethod · 0.95
AddObjectDependsMethod · 0.95
GetLinkInterfaceMethod · 0.80
GetSourceMethod · 0.80
cmLinkItemClass · 0.70
cmListFileBacktraceClass · 0.70
insertMethod · 0.45
GetTypeMethod · 0.45

Tested by

no test coverage detected