# Avoid duplicate linking to avoid Xcode 15 warnings

**URL:** https://discourse.cmake.org/t/avoid-duplicate-linking-to-avoid-xcode-15-warnings/9084
**Category:** Code
**Tags:** os:macos
**Created:** [September 25, 2023, 4:33pm UTC](https://discourse.cmake.org/t/avoid-duplicate-linking-to-avoid-xcode-15-warnings/9084 "2023-09-25T16:33:18Z")
**Posts on this page:** 1
**Showing post:** 10

<div class="post-metadata">

### Author: ![brad.king](https://discourse.cmake.org/user_avatar/discourse.cmake.org/brad.king/32/11_2.png) [@brad.king](https://discourse.cmake.org/u/brad.king)
#### Post date: [September 6, 2024, 1:07pm UTC](https://discourse.cmake.org/t/avoid-duplicate-linking-to-avoid-xcode-15-warnings/9084/10 "2024-09-06T13:07:43Z")

</div>

With this project:

```cmake
cmake_minimum_required(VERSION 3.29) # sets CMP0156 to NEW
project(Discourse9084 C)

add_library(A a.c)
add_library(B b.c)
target_link_libraries(B PUBLIC A)
add_library(C c.c)
target_link_libraries(C PUBLIC A)
add_executable(Y y.c)
target_link_libraries(Y PRIVATE A B C)
add_executable(Z z.c)
target_link_libraries(Z PRIVATE A B)

```

On Linux I get link lines:

```auto
cc ... -o Y libA.a libB.a libC.a libA.a
cc ... -o Z libA.a libB.a libA.a

```

and on Apple I get link lines:

```auto
cc ... -o Y libB.a libC.a libA.a
cc ... -o Z libB.a libA.a

```

The latter are de-duplicated as expected because CMake (after CMP0156) knows that Apple’s linker re-scans automatically.

The `CMAKE_<LANG>_LINK_LIBRARIES_PROCESSING` variable is an undocumented implementation detail that CMake sets internally/automatically based on what linker is being used.

---

_[View the full topic](https://discourse.cmake.org/t/avoid-duplicate-linking-to-avoid-xcode-15-warnings/9084)._
