2009-11-24 5 views
0

정적으로 정의하여 정적 라이브러리를 연결하려고합니다. xcode에서 가능합니까? 기본적으로 ifdefs에 라이브러리 특정 코드를 래핑하려고하므로 플래그를 설정하여 컴파일 타임에 제외 할 수 있습니다.대상 조건 라이브러리 검색 경로 xcode

답변

1

아니요, C #define은 라이브러리 연결과 같지 않습니다.

그러나 BUILT_WITH_FOO처럼, 사용자 지정 빌드 설정 값에서 (전 처리기 매크로 빌드 설정을 통해) C #define을 설정하고 또한뿐만 아니라 설정이 사용자 지정 빌드를 기반으로 설정하기 OTHER_LDFLAGS 빌드를 설정할 수 있습니다. 예를 들어

:

BUILT_WITH_FOO = foo 

GCC_PREPROCESSOR_DEFINITIONS_ = USING_FOO=0 
GCC_PREPROCESSOR_DEFINITIONS_foo = USING_FOO=1 
GCC_PREPROCESSOR_DEFINITIONS = $(GCC_PREPROCESSOR_DEFINITIONS_$(BUILT_WITH_FOO)) 

OTHER_LDFLAGS_ = -lsomething 
OTHER_LDFLAGS_foo = -lsomething -lfoo 
OTHER_LDFLAGS = $(OTHER_LDFLAGS_$(BUILT_WITH_FOO)) 

위는 전 처리기 매크로 및 기타 링커 플래그를 사용할지 여부를 선택하도록 설정 BUILT_WITH_FOO 빌드의 값을 조정할 것이라고는 이름이 A가 _ 후행로 끝나는 변형, 또는 이름이 후행 _foo으로 끝나는 것.

+0

하지만 내 문제가 해결 될까요? 또는 내 검색 경로에 lib.a가 있지만 컴파일시에 참조하는 코드가 없다면 어쨌든 nit가 컴파일됩니다. – drunknbass

+0

정적 라이브러리가 컴파일되지 않았습니다. 링크되어 있습니다. 검색 경로에있는 것만으로는 링크가 연결되지 않습니다. 타겟의 Link Frameworks & Libraries 빌드 단계 또는 OTHER_LDFLAGS (위의 -lfoo와 같이)에서 지정해야합니다. 그것들 중 하나에 없다면, 그것은 연결되지 않을 것입니다. –