다음의 CMake 파일을 사용하여 Boost 라이브러리를 자동으로 다운로드하고 컴파일합니다. 컴파일러 용 프로젝트 파일을 생성 한 후 두 변종을 빌드하려면 cmake --build . --config Debug
및 cmake --build . --config Release
을 실행합니다. 그래서 두 번 빌드 프로세스를 부탁드립니다. 체크섬이 여전히 일치하는 경우 CMake가 아카이브를 다시 다운로드하지 못할만큼 똑똑하더라도 소스 디렉토리로 두 번 추출합니다. 압축은 큰 Boost 라이브러리에서 2 분 정도 소요되므로 CMake가 두 번째 빌드를 수행하는 것을 막고 싶습니다. 단지 variant=debug,release
를 사용하는 것이 가능 것이 particually 예에서 추출 된 소스를 CMake의 ExternalProject_Add와 재사용하는 방법?
ExternalProject_Add(Boost
PREFIX ${BOOST_PREFIX}
TMP_DIR ${BOOST_PREFIX}/temp
STAMP_DIR ${BOOST_PREFIX}/stamp
#--Download step--------------
DOWNLOAD_DIR ${BOOST_PREFIX}/download
URL http://downloads.sourceforge.net/project/boost/boost/1.56.0/boost_1_56_0.tar.gz
URL_MD5 8c54705c424513fa2be0042696a3a162
#--Update/Patch step----------
UPDATE_COMMAND ""
#--Configure step-------------
SOURCE_DIR ${BOOST_PREFIX}/source
CONFIGURE_COMMAND ${BOOST_CONFIGURE_COMMAND}
#--Build step-----------------
BUILD_COMMAND ${BOOST_BUILD_EXECUTABLE} install
--build-dir=${BOOST_PREFIX}/build
--prefix=${BOOST_PREFIX}/install
variant=${BOOST_VARIANT}
link=${BOOST_LINK}
threading=multi
address-model=32
toolset=${BOOST_TOOLSET}
runtime-link=${BOOST_RUNTIME_LINK}
BUILD_IN_SOURCE 1
#--Install step---------------
INSTALL_COMMAND ""
)
,하지만이 방법을 구축 내 프로젝트에서 다른 외부 종속성이 있습니다. 어떻게 CMake가 새로운 아카이브를 다운로드 한 경우에만 아카이브를 추출하도록 할 수 있습니까?
당신은 빈'DOWNLOAD_COMMAND' 2 위'ExternalProject_Add'를 생성하고 첫'ExternalProject_Add'에 종속성을 추가 할 수 있습니다. 두 프로젝트의 'SOURCE_DIR'은 동일해야합니다. [example] (https://github.com/ruslo/hunter/blob/master/cmake/schemes/url_sha1_release_debug.cmake.in)을 참조하십시오. –
@ruslo 위대한 작품입니다. 답변으로 의견을 게시하여 수락 할 수있게 해주시겠습니까? – danijar