mirror of
https://github.com/Kitware/CMake.git
synced 2026-05-04 13:19:51 -05:00
725ea968ac
When processing an indirect dependency of target `A` on target `C` via an interface library B, `cmComputeTargetDepends::AddTargetDepend` was not checking for duplicate dependencies, so that if `A` depended on `C` via multiple interface libraries, the dependency graph built in cmComputeTargetDepends would have duplicate edges. In a real project (LLVM libc) this was causing cmake to consume multiple gigabytes of RAM. Fixes: #27386
27 lines
675 B
Plaintext
27 lines
675 B
Plaintext
The initial target dependency graph is:
|
|
target 0 is \[lib1\]
|
|
target 1 is \[lib2\]
|
|
target 2 is \[top\]
|
|
depends on target 3 \[util\] \(strong\)
|
|
target 3 is \[util\]
|
|
target 4 is \[edit_cache\]
|
|
target 5 is \[rebuild_cache\]
|
|
.*
|
|
The intermediate target dependency graph is:
|
|
target 0 is \[lib1\]
|
|
target 1 is \[lib2\]
|
|
target 2 is \[top\]
|
|
depends on target 3 \[util\] \(strong\)
|
|
target 3 is \[util\]
|
|
target 4 is \[edit_cache\]
|
|
target 5 is \[rebuild_cache\]
|
|
.*
|
|
The final target dependency graph is:
|
|
target 0 is \[lib1\]
|
|
target 1 is \[lib2\]
|
|
target 2 is \[top\]
|
|
depends on target 3 \[util\] \(strong\)
|
|
target 3 is \[util\]
|
|
target 4 is \[edit_cache\]
|
|
target 5 is \[rebuild_cache\]
|