我将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