| 263 | } |
| 264 | |
| 265 | void 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 | |
| 294 | void cmComputeTargetDepends::AddInterfaceDepends( |
| 295 | size_t depender_index, cmLinkItem const& dependee_name, |
no test coverage detected