下载tar.gz包时不支持的协议

AB *_*lim 14 linux build download cmake

我刚从ExternalProject_Add()版本升级GIT_REPOSITORYExternalProject_Add()

它的工作魅力http却在升级后失败了.

我正在尝试使用httpsCMake功能构建第三方库.

ExternalProject_Add(
  luacov
  URL https://github.com/keplerproject/luacov/archive/v0.7.tar.gz
  DOWNLOAD_DIR ${EXTERNAL_PROJECT_DOWNLOAD_DIR}
  CMAKE_ARGS -DCMAKE_TOOLCHAIN_FILE=${MY_TOOLCHAIN_FILE}
  SOURCE_DIR ${EXTERNAL_PROJECT_SRC_DIR}/luacov
  BINARY_DIR ${EXTERNAL_PROJECT_BUILD_DIR}/luacov
  UPDATE_COMMAND ""
  PATCH_COMMAND ""
)
Run Code Online (Sandbox Code Playgroud)

我的观察:

  1. 使用URL选项,ExternalProject_Add()允许httphttps协议下载外部项目.
  2. 使用https选项,ExternalProject_Add()只允许GIT_REPOSITORY,但不允许ExternalProject_Add()下载外部项目的协议.

问题:

有没有办法使用http协议下载和构建外部项目?

错误:

[ 16%] Performing download step (download, verify and extract) for 'luacov'
-- downloading...
 src='https://github.com/keplerproject/luacov/archive/v0.7.tar.gz'
 dst='/home/build/my_build/external_projects/downloads/v0.7.tar.gz'
 timeout='none'
CMake Error at /home/build/my_build/luacov-prefix/src/luacov-stamp/download-luacov.cmake:21 (message):
 error: downloading
'https://github.com/keplerproject/luacov/archive/v0.7.tar.gz' failed

status_code: 1
status_string: "Unsupported protocol"
log: Protocol "https" not supported or disabled in libcurl

Closing connection -1

make[3]: *** [luacov-prefix/src/luacov-stamp/luacov-download] Error 1
make[2]: *** [CMakeFiles/luacov.dir/all] Error 2
make[1]: *** [CMakeFiles/luacov.dir/rule] Error 2
make: *** [luacov] Error 2
Run Code Online (Sandbox Code Playgroud)

mlb*_*ght 21

问题可能是默认情况下,CMake附带的CURL库不是使用SSL支持构建的.我必须编译cmake:

./bootstrap --system-curl
make
sudo make install
Run Code Online (Sandbox Code Playgroud)

......这很有效,因为我的系统卷曲有SSL支持.


Edu*_*Edu 13

它对我有用的是:

  1. 更新openssl

    sudo apt-get install openssl libssl-dev
    
    Run Code Online (Sandbox Code Playgroud)
  2. 修改引导程序文件以启用CMAKE_USE_OPENSSL.将此替换为:

    cmake_options="-DCMAKE_BOOTSTRAP=1 -DCMAKE_USE_OPENSSL=ON"
    
    Run Code Online (Sandbox Code Playgroud)
  3. 通常在cmake文件夹中运行bootstrap脚本

    /@path_to_cmake/bootstrap
    
    Run Code Online (Sandbox Code Playgroud)


AB *_*lim 4

在我的中ExternalProject_Add(),我使用了GIT_REPOSITORYinstedURL选项。

#URL https://github.com/keplerproject/luacov/archive/v0.7.tar.gz
GIT_REPOSITORY https://github.com/keplerproject/luacov.git
Run Code Online (Sandbox Code Playgroud)

luacov下载并构建成功。

对于任何https协议使用功能DOWNLOAD_COMMAND选项ExternalProject_Add()

DOWNLOAD_COMMAND wget https://github.com/keplerproject/luacov/archive/v0.7.tar.gz
Run Code Online (Sandbox Code Playgroud)

及其按预期工作。

谢谢。

  • 使用“DOWNLOAD_COMMAND”时如何提取存档?当通过 URL 下载时,这是自动完成的,但当您这样做时,情况似乎并非如此。 (6认同)