PCH 오류를 수정하는 방법?


132

에서 내 앱을 빌드하려고 Xcode하면이 오류 메시지가 나타납니다.

컴파일러와 다른 분기 ((clang-425.0.24))에서 작성된 PCH 파일 ((clang-425.0.27))

이전에는 발생하지 않았지만 Xcode를 업데이트 한 후 첫 번째 빌드였습니다.

다른 앱은 작동하지만이 특정 앱은 작동하지 않습니다.

"Precompile Prefix Header"설정 을 끄면 작동합니다.

이 오류를 해결하고 해당 설정을 계속 유지하려면 어떻게합니까?

답변:


246

이것은 종종 캐싱 문제입니다. 일반적으로 옵션 키 를 누른 상태에서 제품> 빌드 폴더 정리 ...를 선택하여 해결할 수 있습니다 .


3
이것은 나를 위해 오류를 수정하지 않았습니다. 또한 전체 정리를 수행하고 파생 데이터를 삭제했습니다.
Ben S

6
Product> 아래에 있었고 Clean명령 키가 필요하지 않은 것을 제외하고는 나를 위해 일했습니다 . (Xcode 4.6.1)
Steve Haley

1
@SteveHaley가 Product > Clean있지만 덜 철저한 작업을 수행합니다. 어떤 사람들은과 함께 구매할 수 있으며 Product > Clean, 대부분 Product > Clean Build Folder...은 충분하고, 다른 사람들은 아래 @Sedes 답변에 표시된 수동 제거가 필요합니다.
gaige

7
나는 오래된 질문을 알고 있지만 위에서 언급 한 수정은 도움이되지 않았습니다. 파생 데이터를 삭제하고 프로젝트를 다시 빌드하면 정상적으로 작동합니다.
Ankit Jain

2
rm -rf / ios / build를 할 수 있습니까?
SuperUberDuper

47

DerivedData프로젝트 폴더를 삭제하십시오 . Xcode 환경 설정-> 위치 아래에서 저장 위치를 ​​확인하십시오.


DerivedData반드시 Build폴더가 있는 곳은 아니라는 점에 유의하는 것이 중요합니다 .이 덕분에 많은 도움이되었습니다!
Nit

1
moduleCache내부 DerivedData도 삭제
whtlnv

다른 답변에서 알 수 있듯이 먼저 "청소"를 시도해야합니다. 이것이 작동하지 않으면 단순히 전체 DerivedData폴더를 재귀 적으로 삭제 합니다 ... "궤도에서 핵무기 ... 유일한 방법". @ whitelionV 이것은 또한 rm moduleCache과 다른 모든 것을 가질 것 입니다.
wcochran

39

것으로 보인다 제품> 클린 빌드 폴더 ... (옵션 키를 누르면로)이 대부분의 사람들에게 작동합니다. @gaige가 선택한 답변을 참조하십시오.

대부분의 사람들 (나 자신을 포함)과 달리 여전히 문제가 발생하면 XCode가 미리 컴파일 된 공유 헤더를 다른 곳에 남겨 두었을 것입니다. 나에게 그들은 이것과 비슷한 폴더에 있었다.

/var/folders/<some random two characters>/<some random string>/C/com.apple.Xcode.502/SharedPrecompiledHeaders

방금 SharedPrecompiledHeaders 폴더 전체를 삭제하면 문제가 해결됩니다. 그래도 나는 여기서 다른 많은 것을 만지지 않을 것입니다 ...


2
이것은 나를 위해이 문제를 해결했습니다. 저에게는 커맨드 라인 기반 빌드가 있기 때문입니다.
ThomasW

2
이 경우 Xcode 빌드 스크립트에서 해당 폴더를 찾을 수 있습니다. "SharedPrecompiledHeaders"라는 문자열을 찾았습니다
José Manuel Sánchez

6
예, 이것이 올바른 솔루션입니다. 특히 명령 줄에서 빌드하거나 빌드 스크립트가있는 경우. 사전 컴파일 된 헤더 위치는 빌드 설정 "빌드 위치"-> 사전 컴파일 된 헤더 캐시 경로에서 찾을 수 있습니다.
카림

var 디렉토리를 어떻게 찾습니까?
GoldenJoe

1
@GoldenJoe Open Finder를 열고 다음을 Shift-Cmd-G입력하십시오/var
Sedes

23

Xcode 환경 설정-> 위치 (wcochran의 답변에서 언급했듯이)로 이동하여 DerivedData 폴더의 이름을 바꾸십시오. 필자는 간단히 "DerivedData"에서 "DerivedData2"로 변경했으며 시스템이 이전 위치 참조를 중지하도록했습니다. 다른 답변이 없을 때이 문제가 해결되었습니다. 그림 참조 :

여기에 이미지 설명을 입력하십시오


15

다른 옵션 중 어느 것도 나를 위해 효과가 없었습니다.

에서 캐시 폴더를 삭제했습니다. /Users/(Yourname)/Library/Developer/Xcode/DerivedData/ModuleCache/ (이름 변경도 가능).

오류가 다음과 같은 경우 오류에 언급 된 폴더를 삭제하십시오.

PCH was compiled with module cache path '/Users/User/Library/Developer/Xcode/DerivedData/ModuleCache/75YIWZVTEAO8', but the path is currently '/Users/Stan/Library/Developer/Xcode/DerivedData/ModuleCache/75YIWZVTEAO8


네, 맞아요. 위의 어느 것도 나를 위해 작동하지 않습니다. 언급 한 폴더를 삭제하고 다시 작성하십시오.
Zhang Buzz

이것이 정답입니다. 프로젝트를 다른 경로로 이동 한 후 DerivedData 정리 / 삭제가 작동하지 않습니다.
Bill Chan


13

ios 프로젝트 디렉토리에서 ModuleCache 폴더 를 빌드 하고 삭제 하십시오 . react-native run-ios다시 실행 하면 예상대로 작동합니다. 요약 -rm -rf ios/build/ModuleCache


또한 반응 네이티브 및 빌드에서도 npm run ios를 사용하는 CLI가 아닌 Xcode에서 작동합니다. 제안 된대로 캐시를 제거하면 문제가 해결되었습니다.
dakt

6

Xcode를 업그레이드 한 후 여러 프로젝트에서이를 얻었습니다. Clean Build Folder 및 Clean은 효과가 없었습니다. @sedes answer 및 @ josema.vitaminew의 의견이 저에게 도움이되었습니다. 그러나 약간의 교활함을 사용하지 않으면 까다로울 수 있으므로 단계별 단축키는 다음과 같습니다.

  1. 실패한 빌드 로그로 이동
  2. cmd-f "SharedPrecompiledHeaders"를 사용하여 찾으십시오 (거대한 끔찍한 복잡한 명령 줄 중간에 있습니다)
  3. "SharedPrecompiledHeaders"라는 텍스트를 선택하고 그 경로 비트의 시작 (여전히 큰 텍스트 블록의 중간에 있음)이 시작될 때까지 (예 : 나 / 예 : "/ var / folders / 03) /n71d4r551jv40j5nb8r9fjy80000gn/C/com.apple.Xcode.501/SharedPrecompiledHeaders
  4. 파인더 열기
  5. 메뉴 : 이동-> 폴더로 이동 ...
  6. 선택한 경로를 복사 / 붙여 넣기
  7. "SharedPrecompiledHeaders"에서 모든 하위 폴더 삭제 (안전합니다. 캐시 된 데이터 만 해당)

... 이제 모든 프로젝트가 "고정"되지만 캐싱을 전혀하지 않고 처음으로 다시 빌드해야합니다 (따라서 NEXT 빌드 만 정상보다 느리게 진행됩니다).


5

필자의 경우 SharedPrecompiledHeaders 아래의 모든 파일을 이런 식으로 제거 하고 모든 것이 잘 작동하기 시작했습니다.

sudo find /var/folders/ -type d -name "SharedPrecompiledHeaders" | xargs -n 1 -I dir sudo find dir -name \* -type f -delete

이것은 스크립트에서 쉽게 사용할 수있는 것이기 때문에 마음
Matt

5

Swift Package Manager로 프로젝트를 빌드하려고 할 때이 오류가 발생했습니다.

해결책은 .build디렉토리를 삭제하는 것 입니다.


4

특히 명령 줄에서 빌드하거나 빌드 스크립트가있는 경우 xcode 대상을 정리하는 것만으로는 충분하지 않습니다. 이 폴더를 삭제했습니다.

미리 컴파일 된 헤더 위치는

Target -> build settings => "Build locations" -> Precompiled headers cached path

다음으로이 폴더를 삭제하십시오.

#rm -fr SharedPrecompiledHeaders

여기에 이미지 설명을 입력하십시오


캐시 경로는 빌드 폴더 / build / ModuleCache /에있었습니다. 이전 위치에서 제거 트릭하지 않았다
TheJeff

3

청소로 해결되지 않은 경우. 빌드 캐시 문제입니다. Option 키를 누른 상태에서 제품> 빌드 폴더 정리로 이동하십시오. 그게 내 문제를 해결했다.


3

필자의 경우 Xcode는 프로젝트 기본 번들 (/ Users / Path_to_your_project_source_code / YourProjectName / DerivedData)에 DerivedData 폴더를 생성했습니다.

방금 소스 코드 번들에서이 폴더를 삭제했으며 이제 작동 중입니다.

Xcode 환경 설정-> 위치로 이동을 확인하고 DerivedData가 "상대"로 선택되어 있는지 확인하십시오. 아래 그림을 참조하십시오 여기에 이미지 설명을 입력하십시오


3

나에게 이것은 항상 프로젝트를 다른 위치로 복사 할 때 발생합니다. 나는 이것을 repo 또는 무언가에 밀어 넣으려고합니다.

이전 위치와 새 위치에서 Build 폴더 (rm -rf Build /)를 삭제해야 작동합니다. 빌드 폴더에는 새 위치와 관련이없는 데이터가 있기 때문에 이치에 맞습니다.

이 경우 파생 데이터를 정리하거나 sharedPrecompiledHeaders 폴더를 삭제하지 않았습니다.


2

"shift + command + C"를 누르고 있으면 성공할 것입니다.


2

파생 데이터를 정리 및 / 또는 삭제해도 효과가 없었습니다. 작업은 .pch 파일을 터치 / 저장하여 문자를 추가 한 다음 삭제하여 강제로 다시 작성하는 것입니다. 이 트릭을했다.


이것은 나를 위해 일했습니다. SharedPrecompiledHeaders 디렉토리, 정리 빌드, 정리 폴더 정리 등을 삭제했습니다. 이것은 Xcode 5.1에 있습니다.
migs647

PCH 파일은 어디에 있습니까?
TheJeff

2

클린 빌드를 수행해도 문제가 해결되지 않으면 PCH 파일을 찾아 PCH 파일을 /var/folders/../SharedPrecompiledHeaders제거하십시오.


2
@sedes가 게시 한 위의 내용과 동일한 답변이 있습니다. 중복 답변을 게시하지 마십시오.
michaellindahl

2

제품 또는 빌드 폴더를 청소할 수 있습니다.

SHIFT+ COMMAND+K

OPTION+ SHIFT+ COMMAND+K


2

를 통해 명령 행 빌드를 수행하는 xcodebuild경우-derivedDataPath BUILD_DIR 옵션이 사용 . 그렇다면 ModuleCache.noindex 디렉토리는 일반적인 Xcode 위치 대신 BUILD_DIR에 있습니다. ModuleCache.noindex 디렉토리를 삭제하면 모든 설정이 완료됩니다.

React Native 앱을 빌드 중이기 때문에이 상황에 부딪 쳤으며 iOS 클라이언트는 일반적으로 React Native 도구 세트를 통해 명령 줄에서 빌드됩니다.


1

프로젝트 청소와 빌드 폴더 청소가 모두 작동하지 않았습니다.

그 후 xCode를 완전히 종료하고 표준 위치에서 파생 데이터 폴더를 삭제했습니다. ~ / Library / Developer / Xcode / DerivedData, xCode를 다시 시작하고 프로젝트를 빌드했습니다.

그것은 나를 위해 문제를 해결 한 것 같습니다.


좀 더 자세히 설명해 주시겠습니까?
Richard Dally

Xcode를 닫고 rm -rf ~/Library/Developer/Xcode/DerivedData터미널 에서 실행 한 다음 Xcode를 열면 나에게 도움이되었습니다. 또한 내 위치 (Xcode-> 환경 설정-> 위치)가 모두 기본값인지 확인했습니다.
sman591

1

업데이트

이것은 나를 위해 완벽하게 작동했습니다.

  • 프로젝트 또는 작업 공간을 닫으십시오.
  • Finder에서 : ⇧shift + ⌘cmd + G
  • 붙여 넣기 : ~ / Library / Developer / Xcode / DerivedData /
  • ModuleCache 폴더를 삭제하고 휴지통을 비우십시오.
  • 프로젝트를여십시오.
  • 청소 : ⇧shift + ⌘cmd + K
  • 빌드 : ⌘cmd + B

여기서 xCode 7.3.1
참조


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.