CMake:在 ExternalProject_Add 中下载并解压多个文件
CMake: Download and unpack multiple files in ExternalProject_Add
我想使用 CMake 的 ExternalProject 功能在 Windows 上自动编译 OpenSSL。在配置中,我可以指定一个下载URL。但是我需要多个附加文件,我想将它们解压到同一个源目录中。所以这是意图:
ExternalProject_Add ( ${CMAKE_PROJECT_NAME}
PREFIX ${CMAKE_COMPILE_ROOT}/3rd/${CMAKE_PROJECT_NAME}
URL //sw-storage/3rd/src/${OPENSSL_NAME}/jom.zip
URL //sw-storage/3rd/src/${OPENSSL_NAME}/nasm-2.14.02-win64.zip
URL //sw-storage/3rd/src/${OPENSSL_NAME}/strawberry-perl-5.30.0.1-64bit.zip
URL //sw-storage/3rd/src/${OPENSSL_NAME}/openssl-1.1.1c.tar.gz
CONFIGURE_COMMAND perl Configure VC-WIN64A no-idea no-mdc2 no-rc5 --prefix=${INSTALL_DIR} --openssldir=${INSTALL_DIR}/ssl
BUILD_IN_SOURCE 1
BUILD_COMMAND jom.exe
INSTALL_COMMAND jom.exe install
这似乎不可能。指定多个 URL 条目会导致以下错误消息:
CMake Error at C:/build/cmake-3.13.4/share/cmake-3.13/Modules/ExternalProject.cmake:2455 (message):
At least one entry of URL is a path (invalid in a list)
有没有办法在 CMake 中做到这一点?
CMake 文档指出,当指定多个 URL 时,它们是 each-other 的 fall-backs。
List of paths and/or URL(s) of the external project’s source. When
more than one URL is given, they are tried in turn until one succeeds.
URL_HASH 仅指定一次,因此 CMake 期望所有 URL 指向同一个文件。
在这种情况下,您需要单独的项目和 ExternalProject 的 DEPENDS 选项来控制依赖项,或者尝试其中的任何一个 CMake based OpenSSL builds,将其添加到 ExternalProject 并检查它们是否处理依赖项已经存在。
我想使用 CMake 的 ExternalProject 功能在 Windows 上自动编译 OpenSSL。在配置中,我可以指定一个下载URL。但是我需要多个附加文件,我想将它们解压到同一个源目录中。所以这是意图:
ExternalProject_Add ( ${CMAKE_PROJECT_NAME}
PREFIX ${CMAKE_COMPILE_ROOT}/3rd/${CMAKE_PROJECT_NAME}
URL //sw-storage/3rd/src/${OPENSSL_NAME}/jom.zip
URL //sw-storage/3rd/src/${OPENSSL_NAME}/nasm-2.14.02-win64.zip
URL //sw-storage/3rd/src/${OPENSSL_NAME}/strawberry-perl-5.30.0.1-64bit.zip
URL //sw-storage/3rd/src/${OPENSSL_NAME}/openssl-1.1.1c.tar.gz
CONFIGURE_COMMAND perl Configure VC-WIN64A no-idea no-mdc2 no-rc5 --prefix=${INSTALL_DIR} --openssldir=${INSTALL_DIR}/ssl
BUILD_IN_SOURCE 1
BUILD_COMMAND jom.exe
INSTALL_COMMAND jom.exe install
这似乎不可能。指定多个 URL 条目会导致以下错误消息:
CMake Error at C:/build/cmake-3.13.4/share/cmake-3.13/Modules/ExternalProject.cmake:2455 (message):
At least one entry of URL is a path (invalid in a list)
有没有办法在 CMake 中做到这一点?
CMake 文档指出,当指定多个 URL 时,它们是 each-other 的 fall-backs。
List of paths and/or URL(s) of the external project’s source. When more than one URL is given, they are tried in turn until one succeeds.
URL_HASH 仅指定一次,因此 CMake 期望所有 URL 指向同一个文件。
在这种情况下,您需要单独的项目和 ExternalProject 的 DEPENDS 选项来控制依赖项,或者尝试其中的任何一个 CMake based OpenSSL builds,将其添加到 ExternalProject 并检查它们是否处理依赖项已经存在。