我將libjpeg構建爲外部項目。它的構建通常。 這裏項目文件夾結構:有沒有辦法使用cmake下載tarball
${SOURCE_DIR}/
${SOME_BUILD_DIR}/
externals/
jpeg-9a/
jpeg-pre/
externals/
jpeg-9a/
jpeg-overlay/
CMakeLists.txt
tarballs/
jpegsrc.v9a.tar.gz
CMakeLists.txt
但是壓縮包下載並重新拆封,如果我從零開始建設項目。
換句話說我清潔${SOME_BUILD_DIR}/
。在接下來的構建cmake的做了下:
- 下載
tarballs/jpegsrc.v9a.tar.gz
- 解壓的libjpeg到
externals/jpeg-9a
- 副本
externals/jpeg-overlay/CMakeLists.txt
到externals/jpeg-9a
- 構建的libjpeg在
${SOME_BUILD_DIR}/externals/jpeg-9a/
可以省略其實前3分。但我的興趣只在第一次行動。有沒有辦法阻止額外的下載?
這裏是我的${SOURCE_DIR}/CMakeLists.txt
:
cmake_minimum_required(VERSION 2.8)
include(ExternalProject)
set(EXTERNALS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/externals)
set(JPEG_VERSION "9a")
set(JPEG_URI http://ijg.org/files/jpegsrc.v${JPEG_VERSION}.tar.gz)
set(JPEG_DIR ${EXTERNALS_DIR}/jpeg-${JPEG_VERSION})
ExternalProject_Add(
jpeg
STAMP_DIR ${CMAKE_BINARY_DIR}/externals/jpeg-pre
BINARY_DIR ${CMAKE_BINARY_DIR}/externals/jpeg-${JPEG_VERSION}
URL ${JPEG_URI}
SOURCE_DIR ${JPEG_DIR}
DOWNLOAD_DIR ${CMAKE_CURRENT_SOURCE_DIR}/tarballs
CMAKE_ARGS ""
UPDATE_COMMAND cmake -E copy_directory ${EXTERNALS_DIR}/jpeg-${JPEG_VERSION}-overlay/. ${JPEG_DIR}
INSTALL_COMMAND ""
TEST_COMMAND ""
)
詳見https://github.com/anton-sergeev/cmake_externalproject。
Thanx。其實我遇到了這個問題在項目中建立的多平臺(lin32/lin64/mingw)。每次構建Tarball下載一次。 我試着按照你的建議爲下載tarball添加單獨的目標。 – SergA
完成。 [這裏是CMakeLists.txt](https://github.com/anton-sergeev/cmake_externalproject/blob/b3ef26fe616ac98a3b3eeb86a6b33add0765cacf/CMakeLists.txt)與單獨的下載目標。 Thanx @ComicSansMS。 – SergA