두 가지 버전의 정적 라이브러리를 사용하는 Xcode (6.0.1)에서 프로젝트를 만들려고합니다. 실행 파일이 다른 반면, 유사하다 두 디렉토리에 foo.h 및 bar.hXcode : 정적 라이브러리의 여러 버전
+ include
|-- VersionA
|-- foo.h
|-- bar.h
|-- VersionB
|-- foo.h
|-- bar.h
+ lib
|-- VersionA
|-- foo.a
|-- bar.a
|-- VersionB
|-- foo.a
|-- bar.a
헤더 : 그러므로 나는이와 비슷한 디렉토리 구조를 만들었습니다.
#include "VersionA/foo.h" // or this:
#include "VersionB/bar.h"
이제 질문 : 특정 헤더를 포함하기 위해, I (비 재귀)가 검색 경로 같이 포함에 include 디렉토리를 추가 엑스 코드는 (어떤 마하 - O 지방을 결정 않는 방법. a) 특정 헤더 파일을 링크 할 파일? 이 할당은 어떻게 작동하며 어떻게 영향을 미칠 수 있습니까?
편집 : 링커가 모두 LIB 디렉토리로 보이지만
내가 오류를 연결 중복 기호를 얻을. 헤더 파일에#ifndef FOO_H
#define FOO_H
...
과 같은 가드가 포함되어 있으므로 재정의와 관련하여 오류가 발생하지 않습니다. 내가 하나가 경비를 포함 변경할 경우 즉
#ifndef FOO_H_VERSION1
컴파일시 오류 (Sematic 문제, 'FOO_SOMETHING'의 재정이)가 있습니다. 이는 나에게 의미가 있으며 헤더 파일을 복제하는 것이 좋지 않을 수 있음을 나타냅니다.
그럼에도 불구하고, 내 프로젝트의 경우 에는 정적 라이브러리의 두 가지 버전이 필요합니다. 이것을 달성하기위한 합리적인 방법은 무엇입니까?
재미있는 점은 두 라이브러리 디렉토리를 연결하는 것처럼 보이지만 링커가 중복 된 심볼에 대해 불평하지 않는다는 점입니다. 하지만 헤더 파일의 내용이 동일하기 때문에 중복 파일이 있어야합니다. 맞습니까? – Simon
자, 맞았 어. 한 가지 버전 만 사용하는 것이 쉬웠다. 고마워! – Simon
@ Simon 기쁜 소식입니다.첫 번째 주석과 관련하여 대부분의 경우 링커는 실제로 링크를 사용하지 않는 한 링크 된 라이브러리의 함수를 찾지 않습니다. 두 라이브러리 버전간에 중복 기능이없는 별도의 기능을 사용하는 경우 아무 문제가 없습니다. 그렇지 않다면 - 그것은 이상한 일입니다 - 그것이 계속 작동하기를 바랍니다! – ttarik