2008-10-06 4 views
8

부스트는 많은 상호 의존성이있는 매우 큰 라이브러리입니다. 또한 컴파일하는 데 오랜 시간이 걸립니다. (이는 저의 경우 응답 시간이 느려질 수 있습니다.) CruiseControl.Boost에서 큰 의존성을 어떻게 처리합니까?

내가 사용하는 부스트 부분은 boost :: regex 및 boost :: format뿐입니다.

특정 부스트 하위 라이브러리에 필요한 부스트 부분 만 추출하여 쉽게 컴파일 할 수있는 쉬운 방법이 있습니까?

편집 : 우리가하는 이유를 다시 구축 부스트에 대한 질문에 대답하려면 ... 부스트 헤더 파일을 구문 분석

  1. 아직 시간이 오래 걸립니다. 나는 우리가 필요한 것을 추출 할 수 있을지 의심 스럽다. 파싱도 더 빨리 일어날 것이다.
  2. CruiseControl 설치 프로그램은 모든 것을 처음부터 빌드합니다. 또한 우리가 사용하는 부스트 버전을 업데이트하면 더 쉽게 사용할 수 있습니다. 그러나 우리가 빌드 프로세스를 변경하여 변경 사항이 발생할 때 빌드 머신이 향상 될 수 있는지 확인하고 변경 사항을 SVN에 적용 할 수 있는지 알아보기 위해 조사 할 것입니다. (우리 회사는 문을 닫는 모든 것이 "빌드 머신"에서 빌드되어야한다는 정책을 가지고 있습니다.)

답변

8

먼저 bcp 도구 (도구 하위 폴더에서 찾을 수 있음)를 사용하여 사용중인 헤더와 파일을 추출 할 수 있습니다. 하지만 컴파일 시간에는 도움이되지 않습니다. 둘째, 매번 부스트를 재구성 할 필요가 없습니다. 일단 lib 파일을 모든 버전 변경시 ​​한 번 미리 빌드하고 빌드 할 때 "stage"폴더를 복사하십시오.

2

부스트 라이브러리 자체를 패치하지 않는 한, 언제든지 다시 컴파일 할 이유가 없습니다 빌드.

1

미리 컴파일 된 헤더는 오늘의 단어입니다! 미리 컴파일 된 헤더에 필요한 부스트 헤더를 포함하십시오 - tada!

+0

이 유일한 문제는이 하나의 만 등의 모범 사례를 위반하는 경우에 가장 잘 작동한다는 것입니다 같은 것을 (그에 따라 소스를 조정할 경우, CMake이를로드 할 수 있어야합니다.) 보이는 필수 헤더. 그러나 나에게, 빠른 빌드는 베스트 프랙티스보다 더 중요하게되었다. –

1

우리는 부스트를 사용하고 있지만 실제로 사용하는 유형의 객체 파일 만 포함합니다. 즉, 자생 유틸리티를 사용하여 정적 라이브러리를 구축하고 Boost의 유용한 부분을 포함시킵니다. 우리 CMakeLists.txt

project(MyBoost) 

set(SOURCES 
    boost/regex/src/c_regex_traits.cpp 
    boost/regex/src/cpp_regex_traits.cpp 
    boost/regex/src/cregex.cpp 
    boost/regex/src/fileiter.cpp 
    boost/regex/src/icu.cpp 
    boost/regex/src/instances.cpp 
    boost/regex/src/posix_api.cpp 
    boost/regex/src/regex.cpp 
    boost/regex/src/regex_debug.cpp 
    boost/regex/src/regex_raw_buffer.cpp 
    boost/regex/src/regex_traits_defaults.cpp 
    boost/regex/src/static_mutex.cpp 
    boost/regex/src/usinstances.cpp 
    boost/regex/src/w32_regex_traits.cpp 
    boost/regex/src/wc_regex_traits.cpp 
    boost/regex/src/wide_posix_api.cpp 
    boost/regex/src/winstances.cpp 
) 

add_library(MyBoost STATIC ${SOURCES}) 
관련 문제