2012-10-10 2 views
0

내 프로젝트에서 여러 대상을 다룰 때 다른 플래그를 사용하여 다른 코드를 실행했습니다.프레임 워크/라이브러리에 인수를 전달할 수 있습니까?

: 이제

#ifdef MY_FLAG 
//do this 
#else 
//do this other 
#endif 

나는 외부 라이브러리에 몇 가지 코드를 가지고 내 방식에있어,하지만 각 플래그에 대한 라이브러리의 다른 버전을 컴파일하고 싶지 않아, 그래서 질문은 비슷 해요

코드가 "글로벌"방식으로 실행되어야하는 외부의 라이브러리 (또는 프레임 워크)를 알리는 인수와 같은 것을 전달할 수있는 방법이 있습니까?

답변

0

#ifdef과 함께하는 일은 컴파일러가 볼 수있는 코드를 설정하는 것입니다. 따라서 각 플래그에 대해 서로 다른 버전을 컴파일해야합니다. 라이브러리는 링크되어 있지만 이미 컴파일되어 있기 때문입니다. 나는 그 질문이 당신이 디스크에있는 것과 더 많은 것을 생각합니다.

여러 개의 CPU 아키텍처를 단일 정적 라이브러리에 저장할 수 있습니다. 따라서 ARMv7, ARMv7s 또는 i386을 대상으로하는지 여부와 관련이있는 플래그는 단일 라이브러리로 처리 할 수 ​​있습니다.

다른 라이브러리의 경우에는 다른 라이브러리를 만들어야 할 것입니다. 그러나 이것은 디스크 풋 프린트의 모양 일뿐입니다. 라이브러리에 링크하는 프로젝트의 프로젝트 설정을 사용하여 빌드 구성에 따라 다른 버전의 라이브러리에 링크 할 수 있습니다.

0

하나의 옵션은 프레임 워크의 사용자가 호출 할 수있는 일종의 초기화 메소드 또는 기능을 제공하도록하는 것입니다. 이것은 프레임 워크가 실행해야하는 "모드"를 알려줍니다. 프레임 워크의 클라이언트는 앱을 시작할 때이를 호출 할 수 있습니다.

관련 문제