스위프트 증분 빌드는 어떻게 동작하고 있나. 이 글을 작성하게 된 계기는 자바 gradle 빌드 과정에서 SOLID… | by Jung Kim | Mar, 2021 | Medium
- Xcode 10 이후 llbuild 기반으로 파일 단위로 증분 빌드가 동작한다.
- Xcode 빌드 로그상으로는 차이가 없어 보이지만, 의존성을 분석하고 인터페이스 해시값을 비교하고 오브젝트 .o 파일을 생성한다. 물론 구현부가 바뀌면 다시 생성한다.
- 만약 의존성을 가지는 다른 소스파일에 대한 인터페이스 해시값이 동일하면 오브젝트 파일은 생성하지 않는다.
- 스위프트 파일 의존성 정보는 .swiftdeps 파일에서 확인할 수 있다.
- 파일 단위로 swiftmodule의 일부분 partial을 만들어 놓고 링크할 때 전체 모듈을 합친다.
- 자바 gradle 빌드 경우처럼 ISP로 나눈다고 해서 인터페이스로 나눠지고 변경이 있는 파일만 빌드되지는 않는다.
- 스위프트 소스 파일을 컴파일할 때는 구현부가 바뀐 파일은 다시 컴파일하지만, 선언부를 중심으로 의존성을 파악하기 때문에 선언이 바뀐 파일을 의존하는 경우만 다시 빌드한다.
Detect language Afrikaans Albanian Amharic Arabic Armenian Azerbaijani Basque Belarusian Bengali Bosnian Bulgarian Catalan Cebuano Chichewa Chinese (Simplified) Chinese (Traditional) Corsican Croatian Czech Danish Dutch English Esperanto Estonian Filipino Finnish French Frisian Galician Georgian German Greek Gujarati Haitian Creole Hausa Hawaiian Hebrew Hindi Hmong Hungarian Icelandic Igbo Indonesian Irish Italian Japanese Javanese Kannada Kazakh Khmer Korean Kurdish Kyrgyz Lao Latin Latvian Lithuanian Luxembourgish Macedonian Malagasy Malay Malayalam Maltese Maori Marathi Mongolian Myanmar (Burmese) Nepali Norwegian Pashto Persian Polish Portuguese Punjabi Romanian Russian Samoan Scots Gaelic Serbian Sesotho Shona Sindhi Sinhala Slovak Slovenian Somali Spanish Sundanese Swahili Swedish Tajik Tamil Telugu Thai Turkish Ukrainian Urdu Uzbek Vietnamese Welsh Xhosa Yiddish Yoruba Zulu
Afrikaans Albanian Amharic Arabic Armenian Azerbaijani Basque Belarusian Bengali Bosnian Bulgarian Catalan Cebuano Chichewa Chinese (Simplified) Chinese (Traditional) Corsican Croatian Czech Danish Dutch English Esperanto Estonian Filipino Finnish French Frisian Galician Georgian German Greek Gujarati Haitian Creole Hausa Hawaiian Hebrew Hindi Hmong Hungarian Icelandic Igbo Indonesian Irish Italian Japanese Javanese Kannada Kazakh Khmer Korean Kurdish Kyrgyz Lao Latin Latvian Lithuanian Luxembourgish Macedonian Malagasy Malay Malayalam Maltese Maori Marathi Mongolian Myanmar (Burmese) Nepali Norwegian Pashto Persian Polish Portuguese Punjabi Romanian Russian Samoan Scots Gaelic Serbian Sesotho Shona Sindhi Sinhala Slovak Slovenian Somali Spanish Sundanese Swahili Swedish Tajik Tamil Telugu Thai Turkish Ukrainian Urdu Uzbek Vietnamese Welsh Xhosa Yiddish Yoruba Zulu
Text-to-speech function is limited to 200 characters