IT박스

빌드에서 누락 된 .pch 파일을 고치는 방법?

itboxs 2020. 6. 12. 21:56
반응형

빌드에서 누락 된 .pch 파일을 고치는 방법?


Visual Studio에서 c ++ 솔루션을 빌드하면 xxxxx.pch 파일이 누락되었다고 불평합니다. 사전 컴파일 된 헤더를 다시 가져 오기 위해 누락 된 설정이 있습니까?

완성도에 대한 정확한 오류는 다음과 같습니다.

Error   1   fatal error C1083: Cannot open precompiled header file: 'Debug\xxxxx.pch': No such file or directory

참고 : 최신 버전의 IDE는 관련 파일의 기본 이름에 "stdafx"대신 "pch"를 사용할 수 있습니다. 아래 지침에서 pda를 stdafx로 대체해야 할 수도 있습니다. 죄송합니다. 내 잘못이 아니에요.

  1. 솔루션 탐색기에서 프로젝트를 마우스 오른쪽 버튼으로 클릭하십시오.
  2. 드롭 다운 메뉴 하단에서 속성을 클릭하십시오.
  3. 속성 페이지의 왼쪽 상단에있는 드롭 다운 메뉴에서 모든 구성을 선택하십시오.
  4. C / C ++ 트리를 열고 사전 컴파일 된 헤더를 선택하십시오.
  5. 미리 컴파일 된 헤더 : 사용 (/ Yu) 선택
  6. 사전 컴파일 된 헤더 파일 필드를 채우십시오. 표준은 stdafx.h
  7. 확인을 클릭하십시오

  8. 헤더 파일에 stdafx.h가 없으면 거기에 넣으십시오. 미리 컴파일하려는 모든 헤더를 #include하도록 편집하십시오.

  9. stdafx.cpp라는 파일을 프로젝트에 넣습니다. #include "stdafx.h"를 맨 위에 넣으십시오.
  10. 솔루션 탐색기에서 stdafx.cpp를 마우스 오른쪽 버튼으로 클릭하십시오. 4 단계와 같이 속성 및 모든 구성을 다시 선택하십시오 ...
  11. ...하지만 이번에는 사전 컴파일 된 헤더 작성 (/ Yc)을 선택하십시오 . 이것은 하나의 파일 stdafx.cpp에만 바인드됩니다.
  12. 모든 소스 파일의 맨 위에 #include "stdafx.h"를 넣으십시오.

운이 좋은 13. 손가락을 교차시키고 빌드를 누르십시오.


사전 컴파일 된 헤더 (pch) 사용은 2 단계 프로세스입니다.

1 단계에서 스텁 파일을 컴파일합니다 (VS200x에서는 보통이라고 함 stdafx.cpp). 이 스텁 파일에는 사전 컴파일 할 헤더 만 간접적으로 포함됩니다. 일반적으로 하나의 작은 헤더 (일반적으로 stdafx.h)는 <iostream>and와 같은 표준 헤더를 나열하며이 헤더 <string>는 스텁 파일에 포함됩니다. 이를 컴파일하면 .pch 파일이 생성됩니다.

2 단계에서 실제 소스 코드에는 1 단계의 첫 번째 헤더와 동일한 작은 헤더가 포함됩니다. 컴파일러는이 특수 헤더를 만나면 해당 .pch 파일을 대신 읽습니다. 즉, 매번 표준 헤더를 (재) 컴파일 할 필요가 없습니다.

귀하의 경우 1 단계가 실패한 것 같습니다. 스텁 파일이 여전히 존재합니까? 귀하의 경우 아마 그럴 것입니다 xxxxx.cpp. 이 파일 /Yc:xxxxx.pch은 PCH 프로세스의 1 단계임을 나타내는 컴파일러 플래그이므로로 컴파일 된 파일이어야합니다 . 경우 xxxxx.cpp존재하고 아마의 실종, 이러한 스텁 파일 /Yc:컴파일러 옵션을.


고치다:

  1. 프로젝트에 xxxxx.cpp가 있는지 확인하십시오

  2. / Yc 플래그를 사용하여 xxxxx.cpp컴파일 하십시오 ( 사전 컴파일 된 헤더 작성 )
    (xxxxx.cpp-> 특성-> 사전 컴파일 된 헤더-> 작성 ).

  3. / Yu 플래그를 사용 하여 다른 모든 파일컴파일 하십시오 ( 사전 컴파일 된 헤더 사용 )
    (프로젝트-> 속성-> 사전 컴파일 된 헤더-> 사용을 마우스 오른쪽 단추로 클릭하십시오 )


  1. 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 속성 메뉴 항목을 선택하십시오.
  2. goto C / C ++-> 사전 컴파일 된 헤더
  3. 미리 컴파일 된 헤더를 사용하지 않음을 선택하십시오.

예, 다른 사람들이 지적한 것처럼 / Yc 옵션으로 제거 할 수 있지만 대부분 수정하기 위해 터치하지 않아도됩니다. 설정을 변경하지 않고 왜이 오류가 발생합니까? 프로젝트를 '정리'하고 단일 cpp 파일을 컴파일하려고 시도했을 수 있습니다. 이 경우 프리 컴파일러 헤더가 없기 때문에이 오류가 발생합니다. 성공하지 못한 경우에도 전체 프로젝트를 빌드하고 단일 cpp 파일을 빌드하는 것보다이 오류가 발생하지 않습니다.


서버 빌드 (AppCenter)에서이 문제가 발생하고 CocoaPods를 사용하여 Podfile이 체크인되었는지 확인하십시오.

AppCenter는 Pofile을 찾고 파일에서 PODS 폴더를 찾지 못하면 "pod install"명령 만 실행합니다.

폴더가 체크인되었지만 git은 .pch 파일을 자동으로 무시하므로 (.gitignore를 확인하여이를 확인하십시오) 내 .pch가 체크인되지 않았습니다.

.pch 파일을 강제로 확인하여 문제를 정렬했지만 Appcenter가 pod install 명령을 실행하기 때문에 PODS 폴더 삭제도 작동해야합니다.

다행히도 이것은 누군가를 돕는다.


모든 것이 맞지만이 실수가 있으면 ****. vcxproj 파일에서 다음 섹션을 확인해야합니다.

<ClCompile Include="stdafx.cpp">
  <PrecompiledHeader Condition=

필자의 경우 구성 이름이 잘못되었습니다. 첫 번째 단어 만 있습니다.


나는이 주제가 매우 오래되었다는 것을 알고 있지만 최근 VS2015 에서이 문제를 다루었 고 빌드 폴더를 삭제하고 다시 빌드하는 데 도움이되었습니다. 이것은 프로그램을 닫으려고 시도하거나 빌드 중에 VS를 정지 / 정지하는 프로그램으로 인해 발생할 수 있습니다.


나는 같은 문제가있는 iOS PCH 파일을 찾고 있었고, 나처럼 여기에 있다면 내가 찾은 해결책은 파생 된 데이터를 지우는 것입니다. 시뮬레이터를 닫고 xCode prefs로 이동-> 위치-> 파생 데이터 파일 경로로 이동, xCode를 닫고 파생 데이터 폴더에서 파일 삭제, 다시 시작 및 응원 :)


빌드> 솔루션 정리를 선택한 다음 빌드> 솔루션 빌드를 시도하십시오. 이것은 나를 위해 작동합니다.

참고 URL : https://stackoverflow.com/questions/6096384/how-to-fix-pch-file-missing-on-build

반응형