2009-07-05 4 views
3

부스트 C++ 라이브러리에 대한 명명 규칙을 기본값은 모든 라이브러리가 같은 디렉토리에 내장되어파일 이름 장식이없는 건물 부스트?

libboost_regex-vc71-mt-d-1_34.lib

. 빌드 프로세스를 수정하여 파일 이름에 대상 아키텍처 나 빌드 유형 (버전은 괜찮음)이 포함되지 않도록하고 싶습니다.

vc71/debug/libboost-1_34.lib

vc71/release/libboost-1_34.lib

이 작업을 수행하는 방법에 대한 생각 : 나는 파일 구조에 따라 다른 디렉토리에서 생을 마감 할 위해 건설되고?

답변

3

"--layout = system"을 전달하면 라이브러리 파일 이름에서 모든 장식을 제거 할 수 있습니다. 위의 예는 "vc71/release"경로를 보여줍니다.이 레이아웃을 얻는 방법은 기본 제공되지 않습니다. 당신은 약간의 hackign으로 그것을 할 수 있습니다. 당신은 그 특성에 따라 서로 다른 위치를 지정하기 위해 수정할 수 있습니다

<location>$(stage-locate)/lib 

, 예를 들면 :

<variant>release:<location>$(stage-locate)/lib/release 
    <variant>debug:<location>$(stage-locate)/lib/debug 

에 대한 Boost.Build website를 참조하십시오 Jamroot에서 같은 위치를 지정하는 '무대 적절한'대상을 찾을 추가 문서

+1

- layout은 어디에 문서화되어 있습니까? 나는 온통 보였고 그것에 대해 언급 할 수는 없다. – Gili

+0

"bjam --help"의 출력에 있습니다. 시작하기는이 옵션을 참조하십시오. –

0

나는 Boost 빌드 시스템으로 그렇게 할 수있는 방법을 모르지만, 너무 간단한 어려움없이 스크립트를 사용하여 이동하고 이름을 바꿀 수 있습니다.

대부분의 Windows 컴파일러 및 링커 : 별도의 바이너리를 필요로하는 라이브러리, 부스트 auto-linking을 사용하기 때문에 다른 한편으로

는 대부분의 Windows 컴파일러로, 당신은 거의 라이브러리 파일 이름으로 자신을 염려 할 필요가 없습니다 두 번째 문제를 제거하는 소위 "자동 연결 지원"을 갖추고 있습니다. Boost 헤더 파일의 특수 코드는 컴파일러 옵션을 감지하고 해당 정보를 사용하여 올바른 라이브러리의 이름을 객체 파일로 인코딩합니다. 링커는 검색을 지시 한 디렉토리에서 해당 이름의 라이브러리를 선택합니다.

파일을 이동하고 이름을 바꾸면 문제가 발생합니다.