2014-04-11 2 views
1

내 프로젝트는 Settings.h를 사용하여 서버 URL과 같은 일반적인 구성 설정을 저장합니다.이 코드에서 서버 URL, 아이콘 등이 다릅니다.은 xcode 스키마를 기반으로 헤더를 포함합니다.

내 xcode 작업 공간에 새로운 대상이 있습니다. 나는 2 개의 Settings.h를 별도의 폴더에 가지고있다.

awesomeProject/Settings/Settings.h 
oldProject/Settings/Settings.h 

Settings.h는 프로젝트의 일부 장소 (.pch를 통해로드되지 않음)에 포함되어있다. 두 대상에 대한 헤더 검색 경로를 설정하는 시도했다 및이 작동하지 않았다 (awesomeProject 대상을 컴파일 할 때 oldProject의 Settings.h 포함 된 것처럼).

#ifdef .. #endif 구문을 뿌리지 않고 대상을 기반으로 Settings.h를 #include 할 수 있습니까?

+0

하나의 프로젝트에서'Settings.h '라는 이름의 두 개의 파일을 사용하려고합니까? – Logan

+0

같은 이름이지만 다른 폴더에있는 두 개의 헤더 파일입니다. –

답변

1

내가 이해하고 다른 헤더 파일을 포함 할 필요가있는 별도의 대상이 있으므로 '헤더 검색 경로'를 다르게 설정하고 올바른 파일을 가져올 수 있어야합니다. 당신은 이것을 시도했다고 말했지만 깨끗하고 완전한 재건을 시도 할 수도 있습니다.

+0

건물을 짓기 전에 청소를 시도했지만 제대로 작동하지 않았습니다. 그런 다음 주최자에서 "파생 데이터"를 제거하려고 시도했지만 이러한 종류의 작업이 수행되었습니다. xcode가 컴파일하는 동안 발견 된 첫 번째 헤더 파일을로드하는 것처럼 보입니다. 예를 들어 http://take.ms/96m8N의 경우, oldProject를 통해 newProject를 다시 정렬하고 어떤 대상 (어디서나 사용자 정의 헤더 검색 경로가있는 위치)에 관계없이 첫 번째 세트의 헤더 파일이로드됩니다. 무엇을해야할지 모르겠습니다. –

+0

"헤더 검색 경로"는 올바른 방법입니다. 여기에 자세히 나와있는 것처럼 "NO"값을 가진 "USE_HEADERMAP"이라는 "사용자 정의 변수"를 설정해야했습니다. http://stackoverflow.com/questions/2596695/controlling-which-project-header-file-xcode- will include- 참고 :이 경우 부작용은 관련 헤더 파일이있는 모든 폴더에서 "헤더 검색 경로"에 추가해야한다는 것입니다. –

0

목표를 달성하기 위해 전 처리기를 활용하려고합니다. 하나의 옵션은 대상에 따라 "awesomeProject/Settings/Settings.h"또는 "oldProject/Settings/Settings.h"가 될 각 대상 매크로 SETTINGS_H의 빌드 설정에서 정의하는 것입니다. 그런 다음 소스 코드에서 #include SETTINGS_H 수 있습니다. 물론 각 헤더를 찾을 수 있으려면 헤더 검색 경로를 조정해야 할 수도 있습니다.

솔직히 말해서, #include SETTINGS_H은 제 취향에보기 싫어서 다른 접근 방식을 선호합니다. 단일 "Settings.h"파일을 유지할 수 있지만 상수 값에 대해서는 매크로를 사용하십시오. 예를 들어, "Settings.m"에서

NSString *const kServerURL = SERVER_URL; 

및 대상 빌드 설정에서

당신은 원하는 효과를 달성하기 위해 인용 부호로 플레이해야 할 수도 있습니다 GCC_PREPROCESSOR_DEFINITIONS

SERVER_URL='@"http://stackoverflow.com"' 

에 추가 할 수 있습니다. 프로젝트를보다 잘 조직하려면 매크로 정의를 .xcconfig 파일로 이동하고 각 대상에 대해 별도의 .xcconfig 파일을 보관할 수 있습니다.

관련 문제