Xcode 4 (및 종속성)로 문제 컴파일, 빌드 또는 아카이브


96

이 질문은 더 일반적인 문제를 다루기 위해 지난 몇 주 동안 발전했습니다. (그리고 업그레이드 프로젝트는 오래된 에스).

그러나 동일한 지침을 따르면 많은 문제를 해결할 수 있습니다.

다음과 같은 문제가있는 경우 수락 된 답변의 방법을 시도해보십시오.

  • Xcode 4가 앱을 보관하지 못함
  • Xcode 4는 사용할 수없는 아카이브를 만듭니다.
  • Xcode 4는 .ipa를 생성하지 않습니다.
  • 전 처리기 오류로 인해 Xcode 4가 컴파일되지 않습니다.
  • Xcode 4에서 헤더를 찾을 수 없습니다.
  • Xcode 4의 코드 완료가 작동하지 않습니다.
  • 프로젝트 종속성이 컴파일되지 않습니다.
  • 종속성을 추가하면 위의 문제가 발생합니다.

원래 질문

제목 : Xcode 4의 "어휘 또는 전 처리기 문제 파일을 찾을 수 없음"

Xcode 4에 잘 빌드되고 장치 및 시뮬레이터에서 실행되는 프로젝트가 있지만 보관하려고 할 때 정적 라이브러리와 관련된 헤더 파일을 찾을 때 오류가 발생합니다.

In file included from /Volumes/Development/Path/LBProject/LBProject/LBProject-Prefix.pch:15:
In file included from /Volumes/Development/Path/LBProject/LBFDefines.h:23:
In file included from /Volumes/Development/Path/LBProject/Classes/LBProjectAppDelegate.h:11:
In file included from /Volumes/Development/Path/LBProject/LBProject/../FKNDirectory/FKNDirectoryManager.h:10:
/Volumes/Development/Path/LBProject/LBProject/../FKNDirectory/FKNDataModel.h:11:9: fatal error: 'Merchant.h' file not found [1]
 #import "Merchant.h"
         ^
1 error generated. 

Xcode가 오류를 제공합니다.

lexical or preprocessor issue file not found 

많은 인터넷 검색은 많은 사람들이이 문제를 겪고 있지만 해결책이 없음을 보여줍니다. 누구나 고치거나 단서가 있습니다.

업데이트 :user header 검색 경로로 설정되어 ${BUILT_PRODUCTS_DIR}모든 구성에서. 보관할 때를 제외하고 모든 구성을 사용하여 잘 구축됩니다.

업데이트 2 : Merchant.h 자동 생성되어 .xcdatamodeld패키지 내부에있는 Core Data 클래스 이지만 라이브러리가 빌드 될 때 헤더는 모두 공용 헤더 디렉토리에 복사됩니다.

답변:


119

NB : 아래 단계는 Xcode 아카이브 문제의 90 %를 해결하지만, 의견을 통해 먼저 Xcode를 종료 하는 것이 좋습니다 . 이렇게하면 설정 조정 시간을 절약 할 수 있습니다.

  1. "사용자 헤더 경로"가 올바른지 확인합니다 (프로젝트 및 종속성 모두에서 공백 경로에 ""추가).
  2. "항상 사용자 경로 검색"을 예로 설정
  3. 프로젝트에서 "인덱싱 헤더"라는 그룹 호출을 생성하고 헤더를이 그룹으로 드래그합니다 . 메시지가 표시 될 때 대상에 추가 하지 마십시오 . 여기에는 .xcdatamodeld 내부의 모든 헤더가 포함 되며 , 패키지 콘텐츠를 찾으려면 마우스 오른쪽 버튼을 클릭하고 확인해야합니다.
  4. 모든 종속성에 대해 "Skip Install" 빌드 설정을 "Yes"로 설정하십시오.
  5. 빌드 단계의 "공용"헤더를 "프로젝트"로 이동
  6. 타겟 의 빌드 설정 "설치 디렉토리" 를 다음으로 설정합니다.$(LOCAL_APPS_DIR)
  7. 대상 빌드 설정 "포함에 대한 모든 소스 파일 스캔"을 예로 변경하십시오. ( 링크 )
  8. 최신 버전의 Xcode (> 4.2)에서는 작업 공간과 관련된 이 질문읽고 싶을 수 있습니다 .
  9. 참조 된 모든 프로젝트 에서 project.xcworkspace 파일을 수동으로 삭제합니다.

28
마지막 제안은이 문제를 해결하는 데 필요한 전부입니다. Xcode를 닫았다가 다시 엽니 다.
Chris Miles

1
그래, 나에게도 똑같은 일은 Xcode를 다시 시작해야했습니다. 프로젝트에서 파일 이름을 바꾸고 파일을 이동 한 후에 발생했습니다.
Maurizio

나도. 존재해서는 안되는 버그보다 더 실망스러운 것은 없습니다. 그렇게 쉽게 해결할 수있어서 좋습니다.
maxedison

3
이전 프로젝트를 xcode3에서 xcode4로 마이그레이션하는 Three20 사용자에 대한 참고 사항 : xcode 기본 설정 / 위치 / 고급 /-> 대상에 지정된 위치를 변경해야 할 수도 있습니다. 자세한 내용은 stackoverflow.com/questions/5261447/… 참조
Ben G

1
번호 1에 이런 쓰레기! 따옴표! 물론 $ (SRC_ROOT) 환경은 공백이있는 경로로 해결 될 수 있습니다. 내 프로젝트를 압축하고 다른 곳에서 추출하면 빌드 실패가 발생한 이유를 알 수 없습니다!
Erik Kerber 2013 년

13

XCode 4에서 동일한 문제가 발생했습니다. "어휘 또는 전 처리기 문제 MyFile.h를 찾을 수 없음". 그러나 MyFile.m은 정적 라이브러리가 아니라 표준 클래스였습니다. 그리고 MyFile.m과 MyFile.h가 제대로 포함되었고 프로젝트에 인덱싱되었습니다.

그래서 ... XCode와 Simulator를 종료 한 다음 다시 시작하면 문제가 사라졌습니다.


비슷한 상황이 있었지만 같은 클래스에있는 관련없는 속성을 잘못 참조하여 원치 않는 오류가 표시되었습니다 (기본적으로 self를 사용하는 것을 잊었습니다.)-이상한 것.
JARC

11

대상 빌드 설정 "포함 할 모든 소스 파일 검색"을 아니요에서 예로 변경하면 문제가 해결되었음을 알았습니다.


6

.h 파일을 파인더의 프로젝트 디렉토리에 복사하여 빌드 설정을 변경하지 않고도이 문제를 해결할 수있었습니다. 나는 그것들을 프로젝트에 전혀 추가하지 않았습니다. 프로젝트의 파일 시스템 디렉토리에있는 것만으로도 Xcode의 암시 적 링크가 제대로 작동 할 수있을 것 같습니다. 자세한 내용은 여기를 참조 하세요 .


+1 답변을 수락 한 질문에 대한 링크를 추가했습니다. 정보에 감사드립니다!
Richard Stelling 2011

4

나는 이와 같은 이상한 문제가 있었다. "모든 리소스 파일 검사 ..."를 예로 변경해도 도움이되지 않았습니다. 프레임 워크 검색 경로를 살펴본 결과

  • $ (상 속됨)
  • "$ (SRCROOT)"
  • "$ (SRCROOT) / my / correct / path"

옳은 것처럼 보였지만 여전히 실패했습니다. 그런 다음 2와 3의 순서를 다시 정렬하려고 시도했는데 갑자기 잘되었습니다. 그래서 그것이 왜 힉업인지 확실하지 않지만 다른 사람에게 도움이 될 경우 시도 할 일 목록에 추가하고 싶었습니다.


4

내 해결책은 내

#import "HeaderFile.h"

#import <FrameworkName/HeaderFile.h>

모든 것이 다시 작동하기 시작했습니다. 특이한 점은 몇 번 빌드 한 후 갑자기 작동을 멈춘 것입니다.


나는 내 하위 프로젝트로 다른 모든 것을 시도했으며 이것이 작동하는 유일한 방법이었습니다. 감사합니다.
dirkoneill

정적 라이브러리에는 여전히 큰 따옴표를 사용해야합니다. 꺾쇠 괄호는 시스템 헤더 경로를 검색 하며 항상 사용자 경로 검색 옵션을 활성화 하지 않는 한 사용자 헤더 경로를 검색 하지 않습니다.
devios1 2015 년

2

설정하면 문제가 저절로 해결되었습니다.

빌드 설정-> 프로젝트-> 검색 경로를 예로 설정


2

내 프로젝트에 2 개의 대상 ( ProjectProjectTest of GHUnit)이 있습니다. 내 계획이 Project 로 설정되었을 때 가져 오기 <GHUnitIOS/GHUnit.h>"어휘 또는 전 처리기 문제 파일을 찾을 수 없음"문제 였습니다. 그러나 ProjectTest 구성표로 설정 하면 모든 것이 정상이었습니다. 그래서 Project 에도 추가 GHUnitIOS.framework했습니다 .


나는 반대 문제가 있었다. 내 대답보기 : stackoverflow.com/a/16783389/629014
slcott 2013 년

1

헤더 검색 경로가 올바르지 않은 것 같습니다. 활성 체계에 대한 빌드 설정에서 제대로 구성되지 않았습니다. 이를 확인하고 현재 설정으로 질문을 업데이트하십시오.


1

시뮬레이터에서 비슷한 문제가 있지만 장치 및 헤더 검색 경로 필드가 비어 있지 않습니다 (기본값 인 것 같습니다). 그러나 작업 공간을 변경하면 문제가 해결 된 것 같습니다. 새 작업 공간을 만들고 여기에 프로젝트를 추가 한 다음 도움이되는지 확인할 수 있습니다. 이제 이유를 조사하고 있습니다.


1

내 프로젝트의 특정 .h 파일에 대해 "파일을 찾을 수 없음"오류가 발생했습니다. 프로젝트에서 해당 .h 파일을 제거하고 ( "참조 제거"선택) 다시 추가하여 문제를 해결했습니다.


1

더 변형에 추가 : 나는 두 인스턴스했다 foo.mCompile Source의한 방법 일부 "헤더를 찾을 수 없습니다"빌드 단계를, foo.h.


1

또 다른 기회:

작업 공간 프로젝트에서 : 빌드 단계 섹션의 대상을 확인합니다. 많은 매뉴얼에 따르면 모든 헤더를 다른 위치로 복사하려면 파일 복사 빌드 단계가 필요하다고 말합니다. iOS 프레임 워크는 공유 할 헤더 파일을 포함 할 수 없기 때문입니다 (제 경우입니다).

대상으로 파일 복사 옵션 "제품 디렉토리"를 선택하십시오. 또는 헤더가 상주 할 다른 디렉토리.

그것은 나를 위해 일했습니다. 아마도 Archive (또는 Release) 디렉토리의 빌드는 Debug 용 빌드에서 예상 한 것과 매우 다릅니다.

또한 작업 공간 설정에서 빌드 디렉토리를 확인하십시오.

XD


0

저에게이 문제는 프로젝트에 새 파일을 추가 한 후에 발생했습니다. NSObject에서 파생 된 빈 .m 및 .h. 해결 방법은 다음과 같습니다.

  1. 닫히고 다시 시작된 xCode
  2. XCode를 통해 두 개의 새 파일을 삭제했습니다.
  3. 성공적으로 다시 컴파일되었습니다.

그런 다음 나중에 다시 추가했고 작동했습니다.

확실히 xCode의 버그 ...

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