Levo 가이드 · 개발자: Apple
DerivedData 삭제 방법, 지워도 안전할까?

네, 안전해요. DerivedData에는 Xcode가 소스로 만든 빌드 결과물, 인덱스, 로그만 들어 있어서, 지워도 다음 빌드 한 번이 느려지는 것 말고는 잃는 게 없어요. 먼저 Xcode를 종료하고, 빌드나 아카이브가 돌아가는 중에는 지우지 마세요.
| 들어 있는 것 | 위치 | 지우면 어떻게 되나요 |
|---|---|---|
| 빌드 결과물 | DerivedData/<Project>-<hash>/Build | 다음 빌드 때 다시 만들어져요 |
| 인덱스 저장소 | …/Index.noindex | Xcode가 다시 인덱싱해서 한동안 검색과 자동 완성이 느려져요 |
| 로그 | …/Logs | 오래된 빌드 로그가 Report 내비게이터에서 사라져요 |
| Swift 패키지 | …/SourcePackages | 패키지를 다시 받아야 해서 네트워크가 필요해요 |
| 모듈 캐시 | DerivedData/ModuleCache.noindex | 다시 만들어지고, 모든 프로젝트가 함께 써요 |
직접 하는 방법
폴더는 ~/Library/Developer/Xcode/DerivedData이고, 프로젝트마다 이름과 해시가 붙은 하위 폴더가 하나씩 있어요. 원하는 결과에 맞는 방법을 고르세요.
- 프로젝트 하나, Xcode에서. Product › Clean Build Folder(⇧⌘K)를 선택하세요. 그 프로젝트의 빌드 결과물은 지우지만 인덱스는 남겨요.
- 프로젝트 하나, Finder에서. Xcode › Settings › Locations를 열고 Derived Data 옆의 작은 화살표를 클릭한 다음, 그 프로젝트 폴더를 휴지통으로 옮기세요.
- 전부, 터미널에서. Xcode를 종료한 상태에서:
du -sh ~/Library/Developer/Xcode/DerivedData
rm -rf ~/Library/Developer/Xcode/DerivedData/*
폴더 자체는 남겨 둬도 돼요. 없으면 Xcode가 다시 만들어요. -derivedDataPath을 쓰는 커맨드라인 빌드라면 그 폴더를 대신 지우세요.
빌드, 아카이브, UI 테스트가 돌아가는 중이거나, 비행기 안에서 Swift 패키지를 쓴다면 기다리세요. SourcePackages도 함께 지워져서 다시 내려받아야 하거든요. 남기고 싶다면 Build 폴더와 Index.noindex 폴더만 지우세요.
정리한 뒤 프로젝트가 이상하게 동작하면 File › Packages › Reset Package Caches로 패키지도 초기화하세요. SwiftPM과 CocoaPods 캐시도 마찬가지예요.
지워도 문제가 해결되지 않을 때
개발자들이 꼬인 빌드를 고치려고 DerivedData를 지우는 건, 오래된 모듈 캐시나 인덱스가 원인인 경우가 많아서 실제로 자주 통하기 때문이에요. 통하지 않는다면 문제는 다른 데 있어요. 잘못된 버전으로 해석된 패키지, 오래된 Pods 폴더, 서명 설정 같은 것들이요. 다음으로 패키지 캐시 가이드에 있는 패키지 초기화를 해 보세요.
폴더가 계속 30GB 넘게 다시 차오른다면 어떤 프로젝트 폴더가 가장 큰지 확인해 보세요: du -sh ~/Library/Developer/Xcode/DerivedData/* | sort -h. 해시는 프로젝트 경로로 만들어지기 때문에, 프로젝트의 브랜치나 클론마다 폴더가 따로 생겨요. 앱 하나를 열 군데에 체크아웃했다면 사본도 열 개예요.
Xcode › Settings › Locations에서 DerivedData를 외장 드라이브 같은 다른 곳으로 옮길 수도 있어요. 동작은 하지만, 느린 드라이브에서는 빌드가 눈에 띄게 느려져요. 대부분은 주기적으로 지우는 편이 더 나아요.
Levo는 이렇게 해요
Levo는 각 프로젝트의 DerivedData 폴더를 Xcode 빌드 데이터 그룹 안에 크기, 마지막 빌드 시점과 함께 보여 줘요. 한동안 손대지 않은 프로젝트나 소스 폴더가 사라진 프로젝트의 폴더는 Select › Smartly가 먼저 체크하고, 오늘 아침에 빌드한 건 체크되지 않은 채로 남아요.
Xcode, xcodebuild, 빌드 서비스가 실행 중일 때는 Levo가 그 행을 잠그고 이유를 알려 줘요. 남기고 싶은 건 체크를 풀고 Clean up을 누르세요. Levo가 찾는 항목의 전체 목록은 iOS·Mac 개발자를 위한 Levo에 있어요.
자주 묻는 질문
DerivedData를 지워도 안전해요?
네. 소스로 만든 빌드 결과물, 인덱스, 로그가 들어 있을 뿐이에요. Xcode가 다시 만들기 때문에 지운 뒤 첫 빌드만 느려져요.
Mac에서 DerivedData는 어디에 있어요?
~/Library/Developer/Xcode/DerivedData에 있어요. Xcode Settings를 열고 Locations를 선택한 다음, Derived Data 옆의 화살표를 클릭하면 Finder에서 보여 줘요.
DerivedData를 지우면 중단점이나 스킴도 사라져요?
아니요. 그런 건 DerivedData가 아니라 프로젝트나 워크스페이스에 저장돼요. 사라지는 건 오래된 빌드 로그와 캐시된 인덱스예요.
Xcode는 왜 DerivedData를 계속 다시 채워요?
빌드할 때마다 거기에 기록하기 때문이에요. 프로젝트마다 폴더 하나에 인덱스까지 더해져요. 무거운 프로젝트와 많은 브랜치가 쌓이면 수십 GB가 되니까, 몇 주마다 지우는 건 아주 흔한 일이에요.