Ld(linker) runs even when no code is changed

I have been trying to reduce build time of my project.

While doing it, I found some strange behavior of Xcode.


Current build time of our project is as follows:


1) Clean build (dev config) : 288 sec


2) Normal build (dev config, 1 line code change): 74 sec


Breakdown of build time:

  • CompileSwiftSources (1 task): 34 sec
  • Ld (2 tasks): 30 sec
  • PhaseScriptExecution (5 tasks) : 4 sec
  • CodeSign (3 tasks): 2 sec
  • Ditto (2 tasks): 1 sec


3) Normal build (dev config, no code change): 39 sec


Breakdown of build time:

  • Ld (2 tasks): 30 sec
  • PhaseScriptExecution (5 tasks) : 4 sec
  • CodeSign (3 tasks): 2 sec


Taking long for clean build is fine. However, I think it is strange that it takes 30 seconds to link codes by "Ld" even when no code is changed. I asked one of my colleagues to do the same research with his private project, and it turns out that "Ld" does not appear in the build time breakdown when no code is changed. So I think there might be something wrong with my project and wonder how to fix it.


Is there anyway to reduce this link time?