코드가 변경되면 (파일은 .pch가 아니더라도) 매번 완전한 프로젝트가 다시 컴파일됩니다.
답변
2017/1/2 업데이트
이 문제는 Xcode 8.2.1에서 해결되지 않았습니다 (내 프로젝트).
어떻게 살아남는지?
Code IDE: Xcode/Atom
Build: xcrun
Debug: Xcode (Control + Command + R)
2016/12/17 업데이트
이 문제는 Xcode 8.2에서 해결되지 않았습니다.
2016/12/12 업데이트
빌드 및 디버그를위한 코드와 명령 행에 대한 원자가 이제 제 선택입니다. 애플이이 합법적 인 버그를 곧 고치길 바란다
2016/12/04 업데이트
이 문제는 Xcode 8.2 (베타 2)에서 해결 된 것으로 보입니다 .
그러나 나를 위해 해결되지 않으면 Xcode 8.2를 사용할 때도이 문제에 직면합니다. 당신은 (다운로드 Xcode8.2 베타 2 그것을 시도를 제공 할 수 있습니다 여기에 )
빌드 시스템 • Xcode는 작은 변경 사항이 발생한 경우 전체 대상을 다시 작성하지 않습니다. (28892475)
이전 답변 :
이것은 해결 방법입니다.
“빌드 설정”탭-> “C 언어 방언”-> “컴파일러 기본값”으로 변경하십시오.
참고로 :
“C 언어 방언”이 “컴파일러 기본값”대신 “GNU99″로 설정되었습니다. 이전에는 표준이 GNU99 였지만 지금은 그렇지 않았습니다. 어느 시점에서 Xcode는 라이브러리 프로젝트 설정을 올바르게 마이그레이션하지 않았으므로 GNU99로 설정되었습니다. 일단 GNU99로 변경하면 매번 모든 코드를 다시 컴파일하는 것을 중단했습니다!
답변
제품-> 구성표-> 구성표 편집으로 이동하십시오. 왼쪽 열에서 빌드를 선택하고 선택을 취소 ” 암시 적 종속성을 찾기 “
그러나이 플래그는 프로젝트를 처음 빌드 할 때 확인 상태를 유지해야합니다.
답변
나를 위해 수정은 스토리 보드를 닫는 중이었습니다. 보조 편집기로 소스 파일을 열었고 스토리 보드 파일도 열었습니다 (스토리 보드를 닫지 않았기 때문에-변경하지 않았기 때문에) 불필요한 모든 컴파일이 제거되었습니다.
답변
업데이트
내가 할 수 있었던 가장 큰 개선점은 프로젝트를 모듈화하는 것이 었습니다. 거의 모든 다른 클래스에 사용되는 ORM 계층을 구체적으로 모듈화합니다. 이 코드를 프로젝트 내 별도의 대상으로 옮기고 모듈로 가져와 컴파일 시간을 크게 향상시킬 수있었습니다. Xcode는 더 이상 빌드를 할 때 불필요한 파일을 다시 컴파일하기로 결정하지 않습니다.
이제 빠른 증분 디버그 빌드를 위해 단일 파일 컴파일 방법을 사용 합니다.
이 링크에는 코드 리팩토링, https://medium.com/rocket-fuel/optimizing-build-times-in-swift-4-dc493b1cc5f5를 포함하여 다른 좋은 제안이
있습니다.
낡은
여전히 Xcode 9에서 계속 문제가되었습니다. 많은 여러분과 마찬가지로 많은 소스 파일 을 사용하여 큰 신속한 4 / cocoapods 프로젝트를 작업하고 매번 파일을 다시 컴파일 할 때마다 격렬합니다.
지금까지 다음 설정으로 최상의 결과를 얻고 있습니다. 나는 당신이 그것을 시도하고 그것이 당신을 위해 어떻게 작동하는지 볼 것을 제안합니다.
- 스키마-> 빌드-> “암시 적 종속성 찾기”= TRUE
- 빌드 설정-> 링크 타임 최적화 = 증분
- 빌드 설정-> 최적화 수준 (디버그) = 없음 [-OO]
- 빌드 설정-> 최적화 수준 (릴리스) = 가장 빠르고 작은 [-Os]
- 빌드 설정-> 사전 컴파일 된 헤더의 공유 증가 = 예
- 빌드 설정-> 증분 증류 사용 = 예
사용자 정의 사용자 정의 빌드 설정 추가
- 빌드 설정-> HEADERMAP_USERS_VFS = YES
참고 : 전체 모듈 최적화에 대한 사용자 정의 사용자 정의 설정이 없습니다.
답변
이 문제를 해결 한 것으로 보이는 접두사 헤더와 관련하여 코드에서 몇 가지 사항을 변경했습니다. 어느 쪽이 실제로 트릭을했는지 모르겠지만 다른 누군가에게 도움이되기를 바랍니다. 접두사 헤더가 설정되어 있지 않으면 이것이 문제가 아닌 것 같습니다 (또는 문제가 다각적입니다).
- 빌드 된 제품 디렉토리의 파일 인 접두사 헤더에서 가져 오기를 제거하여 이에 대한 빌드 설정 ( “사전 컴파일 된 헤더가 빌드 디렉토리의 파일을 사용함”)을 “아니오”로 변경할 수 있습니다. 다른 가져 오기를 통해 간접적으로 가져 오지 않아야합니다.
- Clang 모듈을 사용하는 접두사 헤더에서 헤더 디렉토리에 module.modulemap 파일이있는 라이브러리 또는 프레임 워크를 가져 와서 코드를 작성할 수 있도록하십시오
@import MyModule
. (나에게 이것은 1 단계와 1 단계는 동일했습니다.) - 접두사 헤더 공유에 대한 빌드 설정을 “예”로 설정하십시오. (필요하지 않다고 생각하며 내 프로젝트에는 아무런 영향을 미치지 않아야합니다. 아무것도 시도하려고했기 때문에 변경했기 때문에 이것을 진술하고 있습니다. :))
- Xcode를 종료하고 DerivedData / ModuleCache 디렉토리를 삭제하십시오 (정확하게 기억하면 ~ / Library / Developer에 구성되어 있습니다).
그래도 작동하지 않으면 접두사 헤더에서 가져 오기를 더 제거 할 수 있습니다. 그것을 넘어 뜨리는 무언가가있을 수 있습니다 …
답변
https://forums.developer.apple.com/thread/62737 에 따라 적극적으로 작업하고있는 것처럼 보이지만 해결 방법은 추가하는 것입니다
HEADERMAP_USES_VFS = YES
대상의 빌드 설정에서 (프로젝트-> 대상-> 빌드 설정-> 사용자 정의).
이 솔루션은 지난 달 동안 다른 솔루션이 일관되게 작동하지 않으면 서 매일 저에게 효과적이었습니다.
편집 :이 설정을 정의하면 훨씬 덜 자주 보이지만 여전히 모든 것을 다시 컴파일하는 경우가 있습니다.
답변
@IBDesignable
스토리 보드 에서이 @IBDesignable
속성 이 포함 된 뷰가 있기 때문에 Xcode 빌드 프로젝트에서 항상 지시문에 대한 모든 코드를 확인하십시오 . 두 번째는 스토리 보드를 별도의 창 (탭이 아닌)으로 열어서 Xcode가 모든 시뮬레이터를 영원히 빌드하도록 강요하는 것입니다.