2010-01-24 4 views
2

SDK에 라이브러리의 디버그 및 릴리스 빌드를 모두 포함하는 것이 일반적이라고 알고 있습니다. 내 질문은 유통 및 Xcode 통합 측면에서 맥 OS X 프레임 워크에 대한 표준 방법이 존재하는지 여부이다.라이브러리의 Mac OS X SDK에 디버그 빌드 포함

하나의 옵션은 완전히 다른 별도의 프레임 워크를 제공하는 것입니다. MyLibrary.frameworkMyLibraryDebug.framework. 이것이 올바른 방법이라면, Xcode에 올바른 방법을 사용하도록 알려주는 트릭이 있습니까? Xcode 프로젝트에 프레임 워크를 추가 할 때 단일 빌드 구성에만 추가하는 옵션이없는 것처럼 보였습니다. 각각의 구성에 대해 수동으로 올바른 -framework MyLibrary[Debug] 명령 줄 옵션을 사용하는 것이 좋습니다.

감사합니다.

답변

3

Mac OS X 동적 링커 (dyld)에는 DYLD_IMAGE_SUFFIX과 같은 기능이 있습니다. 링크 된 모든 프레임 워크 또는 공유 라이브러리의 디버그 버전을 동적으로로드 할 수 있습니다. 그렇다면 완전히 별개의 .framework 번들이 필요하지 않습니다. 단순히 MyLibrary_debug이라는 또 다른 공유 라이브러리를 작성하십시오. 예를 들어, 타이거 CoreFoundation에서 디버깅하고 (그들은 어쨌든 보안 업데이트를 받았지만,하지 않은 모습) 프로파일 변종 포함 위와 애플의 프레임 워크와

% ls -l /System/Library/Frameworks/CoreFoundation.framework/Versions/A/ 
total 20080 
-rwxr-xr-x 1 root wheel  1M Sep 10 17:55 CoreFoundation* 
-rwxr-xr-x 1 root wheel  6M Apr 24 2007 CoreFoundation_debug* 
-rwxr-xr-x 1 root wheel  2M Apr 24 2007 CoreFoundation_profile* 

을, 표준 "디버그"접미사는 _debug입니다. Xcode 집합 내의 실행 파일의 일반 창에서 "프레임 워크로드시 [디버그] 접미사 사용"설정은 DYLD_IMAGE_SUFFIX=_debug입니다. 당신은뿐만 아니라 _debug를 사용하여 생각

좋은 생각,하지만 난 애플이 여러 차례 (someexamples)에 자신의 프레임 워크의 _debug 버전을 끊었다 때문에,하지 않는 것이 좋습니다. Leopard의 경우에만 libSystem, libmxlibmathCommon은 디버그 변형이 있지만 Snow Leopard에서는 다시 깨졌습니다 (직접 this problem).

디버그 라이브러리에 다른 접미어를 선택하는 경우 Apple 버그를 유발하지 말고 나머지 프레임 워크 (헤더, 자원 등)를 일반 변형과 디버그 변형간에 공유 할 수 있어야합니다.