# 스위프트 증분 빌드는 어떻게 동작하고 있나

> Clean Markdown view of GeekNews topic #3953. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=3953](https://news.hada.io/topic?id=3953)
- GeekNews Markdown: [https://news.hada.io/topic/3953.md](https://news.hada.io/topic/3953.md)
- Type: news
- Author: [godrm](https://news.hada.io/@godrm)
- Published: 2021-03-25T10:12:17+09:00
- Updated: 2021-03-25T10:12:17+09:00
- Original source: [medium.com](https://medium.com/@jungkim/스위프트-증분-빌드는-어떻게-동작하고-있나-b3c1512a1689)
- Points: 4
- Comments: 0

## Topic Body

다음과 같이 요약할 수 있습니다.

- Xcode 10 이후 llbuild 기반으로 파일 단위로 증분 빌드가 동작한다.

- Xcode 빌드 로그상으로는 차이가 없어 보이지만, 의존성을 분석하고 인터페이스 해시값을 비교하고 오브젝트 .o 파일을 생성한다. 물론 구현부가 바뀌면 다시 생성한다.

- 만약 의존성을 가지는 다른 소스파일에 대한 인터페이스 해시값이 동일하면 오브젝트 파일은 생성하지 않는다.

- 스위프트 파일 의존성 정보는 .swiftdeps 파일에서 확인할 수 있다.

- 파일 단위로 swiftmodule의 일부분 partial을 만들어 놓고 링크할 때 전체 모듈을 합친다.

- 자바 gradle 빌드 경우처럼 ISP로 나눈다고 해서 인터페이스로 나눠지고 변경이 있는 파일만 빌드되지는 않는다.

- 스위프트 소스 파일을 컴파일할 때는 구현부가 바뀐 파일은 다시 컴파일하지만, 선언부를 중심으로 의존성을 파악하기 때문에 선언이 바뀐 파일을 의존하는 경우만 다시 빌드한다.

## Comments



_No public comments on this page._
