2011-03-11 4 views
11

난 정말이 엑스 코드에서 작동하도록하기 위해 사투를 벌인거야 4.두 개의 프로젝트

나는 많은 응용 프로그램 (네트워킹)에 재사용 할 하나 개의 프로젝트를 가지고 그래서 작업 공간을 만들 내 두 프로젝트를 추가하십시오. 실패 경우 지금까지 너무 좋아 .... 이 .. 특별한 이유없이

#import "JSONRequest.h" 

입니다. 자동으로 헤더 파일의 파일 이름을 완성합니다. 필자는 이것이 "계획"(xcode 4의 새로운 개념)과 관련이 있다고 생각하여 빌드 단계에서 네트워킹 목표를 추가하려고했습니다. 그 순서 변경 ... 설정 ...에서 내가 어떤 성공하지 않고 설정의 많은 다른 조합을 시도했습니다 .. 계획 관리 "공유"그리고 오류 메시지가 얻을 것은입니다 :

JSONRequest.h: No such file or directory 

이있는 경우 단서, 알려주세요.

+0

가능한 복제본 [Xcode 4.2 : 하위 프로젝트에서 .h 파일을 가져 오는 방법] (http://stackoverflow.com/questions/9501799/xcode-4-2 -how-to-import-h-file-from-subproject) –

답변

10

참조하는 프로젝트의 헤더 또는 원본 폴더를 헤더 검색 경로에 추가 할 수 있습니다.

  1. JSONRequest.h를 가져 오는 대상을 클릭하십시오.
  2. 빌드 설정을 클릭하십시오.
  3. "헤더 검색 경로"를 검색 상자에 입력하십시오.
  4. 값 셀을 두 번 클릭하십시오.
  5. + 기호를 클릭하십시오.
  6. 참조 할 프로젝트의 경로를 설정하십시오. JSONlib이라고합시다. 경로는 참조 프로젝트 (JSONlib를 사용하는 프로젝트)의 루트에 대한 상대 경로입니다. 예 : ../JSONlib/src/headers/ 또는 .h 파일이있는 곳이면 어디든.
  7. 완료되었습니다.
  8. 깨끗한 다음 빌드하십시오.

사과 개발자 포럼에서이 문제에 대한 자세한 정보를 확인할 수 있습니다. 행운을 빌어 요. 빌드에서

+0

예, 실제로 작동하지만 프레임 워크 클래스에서 자동 완성을 얻지 못합니다. – Erik

+0

그 일이 저에게 일어났습니다. Xcode를 다시 시작하고 자동 완성 기능을 다시 사용했습니다. 예상 된 동작은 공유 폴더의 경로를 헤더 검색 표시 줄에 추가하는 것이므로 버그입니다. YMMV. – bobc

+0

또한 http://stackoverflow.com/questions/9370518/xcode-4-2-how-include-one-project-into-another-one을 참조하십시오 (이 문제에 대한 해결책과 여러 가지 다른 성가신 지옥 문제 포함). 다른 프로젝트에서 한 프로젝트 포함) – AlexChaffee

6

정말로 무엇을하려고합니까?

전체 Xcode 프로젝트가있는 경우 일반적으로 프로젝트에서 하나 이상의 대상 (예 : 프레임 워크 등)을 빌드하는 다른 제품간에 공유하려고합니다. 따라서 "공유 된"프로젝트는 포함 된 작업 영역과 상관없이 프레임 워크를 자체적으로 구축 할 수 있어야합니다.

프레임 워크라고 가정 해 봅시다. 대부분의 경우 Xcode는 프레임 워크를 사용하여 (가정 된) 앱의 링크 빌드 단계에 프레임 워크 제품을 추가하기 만하면 종속성을 파악할 수 있습니다. 끝난. Xcode는 프레임 워크 프로젝트의 타겟을 먼저 빌드해야합니다. 앱 프로젝트의 타겟을 빌드 할 때 링크되어 있기 때문입니다.

그래서 문제는 Xcode가 파일을 찾고자하는 곳을 아는 것일 수 있습니다. 작업 공간 내의 프로젝트는 해당 작업 공간의 빌드 폴더를 공유하기 때문에 서로를 "볼"수 있습니다. 그러나 프레임 워크의 경우, 파일 이름을 통한 간단한 가져 오기는 잘라 내지 못합니다. 당신이 필요로하는 것 :

#import <MyNetworkingFramework/MyNetworkingFramework.h> 

당신이 (프레임 워크 대상의 사본 헤더의 공공 헤더 중 하나의 위상을 구축해야합니다) 특정 헤더 (JSONRequest.h)를 포함하고 있기 때문에, 당신은 필요한 것 :

#import <MyNetworkingFramework/JSONRequest.h> 

"공유"프로젝트가 프레임 워크가 아닌 경우 질문을 수정하여 두 프로젝트와 대상에 대한보다 자세한 설명을 포함시켜야합니다.

+0

안녕하세요. 프레임 워크의 헤더에 관한 비슷한 문제가 있습니다. #include 대신 #include 만 포함하고 싶습니다. . 프레임 워크 내에서 헤더 심볼릭 링크에 대한 경로로 HEADER_SEARCH_PATHS를 사용하여이 작업을 수행 할 수 있지만 이상적이지는 않습니다. 다른 방법이 있습니까? 고맙습니다! – StinkyCat

1
이 나를 위해 일

,

설정 ->헤더 검색 경로은 ->

$(SRCROOT) and mark it as recursive.

일을하지 위에 당신은 또한 방법 다음 시도 할 경우 항목

아래에있는 추가

<path-of-other-project> and mark it as recursive.

희망이 도움이 되겠습니다! (작업 공간을 청소하거나 다시 시작해야 할 수도 있습니다)