2009-07-07 3 views
5

나는 프로젝트간에 코드 공유를 설정하기 위해 Clint Harris' tutorial을 사용했으며 모든 것이 내 컴퓨터에서 예상대로 작동합니다. 하지만 제 동료의 컴퓨터에서 컴파일러는 빌드 할 때 정적 라이브러리 프로젝트에서 헤더 파일을 찾지 못하는 것 같습니다.정적 라이브러리 헤더가없는 이유는 무엇입니까?

동료가 git 저장소를 복제하여 프로젝트를 만들었습니다. 우리는 모든 관련 빌드 플래그와 X 코드 설정을 n 번했지만 프로젝트는 단순히 자신의 컴퓨터에서 컴파일하는 것을 거부합니다.

  1. 프로젝트 '디렉토리의 전체 경로에 빈 공간이 있는지 확인하십시오 : 이것은 내가 할 내 동료에게 물었다 주로 복사 튜토리얼에서 붙여 넣은 것입니다

    .

  2. projects 디렉토리 안에 "build_output"이라는 다른 폴더를 만듭니다.
  3. XCode의 "XCode> 환경 설정"에서 "빌드"탭을 선택하고 "빌드 프로젝트 배치"를 "사용자 지정된 위치"로 설정하고 작성한 공통 빌드 디렉토리의 경로를 지정하십시오.
  4. "중간 빌드 파일 넣기"를 "빌드 할 때"로 설정하십시오.
  5. "소스 트리"탭을 선택하고 "+"버튼을 클릭하고 열을 채워 새 소스 트리 변수를 만듭니다. "Setting Name"과 "Display Name"둘 다에 [정적 라이브러리를 생성 한 공유 프로젝트의 이름]을 입력하십시오. 경로에서 프레임 워크 폴더의 전체 경로를 지정합니다.

이 단계를 수행하면 정적 라이브러리를 사용하는 프로젝트에서 자신의 컴퓨터에서 정적 라이브러리를 컴파일해야합니다. 그러나 그렇지 않습니다. 기본적으로 그가받는 오류는 다음과 같습니다.

error: TheFrameworkHeader.h: No such file or directory 

다음 누락 된 헤더로 인한 다른 오류 문자열입니다.

문제 해결을위한 전략은 무엇입니까? 또는 비슷한 경험을 가지고 있으며 힘들게 얻은 지식을 공유 할 수있는 사람? 요약 한 지침에서 누락 된 것이 있습니까? 정적 라이브러리를 컴파일 할 때 Copy Headers 빌드 단계에서 헤더의 역할을 설정해야합니까?

답변

8

유용한 조언이 있긴하지만,이 상황을 이해하지 못했지만, 비슷한 상황에있는 사람들에게 약간의 정보가 있습니다. 원본 p를 분할하여 라이브러리 및 종속 프로젝트를 만들었습니다. 두 개로. 처음에는 라이브러리와 애플리케이션이 동일한 프로젝트 내에서 두 개의 타겟이었습니다. 나중에 앱을 별도의 프로젝트로 옮겼습니다.모든 것이 제대로 작동하는 것처럼 보였고 두 프로젝트를 원격 자식 저장소에 밀어 넣었습니다. 그러나 이들이 다른 컴퓨터에서 복제되었을 때 라이브러리 헤더가 발견되지 않았습니다.

나중에 원래 컴퓨터에서 프로젝트를 복제 할 때 동일한 오류가 발생했음을 발견했습니다. 많은 투쟁 끝에 나는 두려운 세부 묘사로 고정시켰다 : 종속 프로젝트의 폴더 이름! (즉, 라이브러리가 아닌 응용 프로그램이있는 프로젝트) 응용 프로그램 식별자가 아니라 의 이름이 인 .xcodeproject 패키지의 이름이 아닙니다. 내가 그것을 바꾸 자마자 모든 것이 작동합니다. 다시 원래 이름 (모든 컴퓨터에서)으로 변경하면 헤더가 발견되지 않습니다.

누구든지 이에 대한 통찰력이 있다면 답을 게시하십시오.

EDIT : 게시 한 이래로 다른 프로젝트에서 같은 문제가 발생했으며 .xcodeproject 폴더가있는 폴더의 이름을 바꾸면 문제가 해결되었습니다.

+0

나는 똑같은 일이 발생했다. 'ChineseZodiac'== 나쁘다. '조디악'== 좋다. WTF? –

+0

우리 셋이됩니다. 어쩌면 버그를 신고 할 때가 있습니다. – Felixyz

+0

+1 내 두통을 치료합니다. – hwaxxer

0

특정 시스템을 구축하는 데 문제가있는 경우 시스템 또는 사용자 설정이 문제 일 수 있습니다. environment variable (아마도 INCLUDE_PATH 또는 그 친척 중 하나 인 XCode는 GCC를 사용합니다). 당신은 "." 이 변수 중 하나에

이 문제를 해결하는 가장 좋은 방법은 필요한 폴더 경로를 빌드 스크립트의 -I 스위치에 추가하는 것입니다.

+0

고맙습니다,하지만 Xcode에서 "사용자 헤더 검색 경로"를 올바르게 설정하기 위해 대상에 빌드 패널을 사용했습니다. Xcode의 환경 설정에있는 Source Trees 설정에서), 그게 내 devbox에서 작동하도록 한 전부입니다. (또한 "Other Linker Flags"를 -ObjC로 설정했습니다.) 이제 제 3의 컴퓨터에서 이것을 시도해 보았습니다. 그리고 유일하게 작동하는 것은 원래의 devbox입니다. – Felixyz

0

필자는 종종 누락 된 파일 (즉, TheFrameWorkHeader.h "가 git 저장소에 있는지 확인하십시오. 빌드 설정이 맞지만 파일이 어떻게 든 추가되지 않았을 수도 있습니다.

+0

아니요, 저장소에 체크인했습니다. – Felixyz

0

"검색 경로 -> 사용자 헤더 검색 경로"빌드 설정 (모든 구성에 대해)은 공유 Xcode 프로젝트가 포함 된 디렉토리를 가리키고 있는지 확인하십시오 (만든 새 소스 트리 변수를 사용할 수 있음)

+0

많은 감사하지만, 나는 이것과 다른 모든 상상할 수있는 설정을 12 번 확인했습니다. 나는 아직도 무엇이 잘못되었는지 알지 못하지만 약간의 정보를 공유하기 위해 질문을 편집 할 것입니다. – Felixyz

+0

새 답이 추가되었으므로 질문에 답이 표시되지 않습니다. – Felixyz

2

나는 그것이 힘줄이라고 생각하지 않는다, 나는 그것이 xcode라고 생각한다. 여기 xcode/xcodebuild가 포함 경로를 잘못 해석하여 (매우 간단합니다.) 정확하게 동일한 라이브러리 프로젝트와 xcconfig 파일 (svn repo에서 깨끗한 체크 아웃)을 포함하지만 폴더를 포함하는 다른 문제가 발생합니다. 그래서, 고맙습니다 솔루션에 대한 더 이상 자식을 비난하지 마십시오 ;-)

+0

아니, 자식은 더 이상 용의자 중 하나가 아닙니다 :) 그것은 무엇이 xcode 혼란을 일으키는 여전히 불분명하다. 프로젝트 파일에 어떤 종류의 메타 정보가 있어야하나요? – Felixyz