如何通过 CMake 使用他们的 SHA256 哈希下载提升?
How to download boost using their SHA256 Hash through CMake?
我正在尝试将 boost 作为外部项目添加到我的项目中。但是,当我添加 URL 来提升版本并使用他们的哈希值时,即使我直接从他们的网站复制了它,我也会出现哈希不匹配。此处链接以获取最新版本。这是我的boostExternal.cmake文件:
#---------------------------------------------------------------------------
# Get and build boost
SET_PROPERTY(DIRECTORY PROPERTY "EP_BASE" ${ep_base})
SET(boost_GIT_TAG "origin/master")
set( Boost_Bootstrap_Command )
if( UNIX )
set( Boost_url "https://dl.bintray.com/boostorg/release/1.70.0/source/boost_1_70_0.tar.gz")
set( Boost_Hash "SHA256=882b48708d211a5f48e60b0124cf5863c1534cd544ecd0664bb534a4b5d506e9")
set( Boost_Bootstrap_Command ./bootstrap.sh )
set( Boost_b2_Command ./b2 )
elseif( WIN32 )
set( Boost_url "https://dl.bintray.com/boostorg/release/1.70.0/source/boost_1_70_0.zip")
set( Boost_Hash "SHA256=48f379b2e90dd1084429aae87d6bdbde9670139fa7569ee856c8c86dd366039d")
set( Boost_Bootstrap_Command bootstrap.bat )
set( Boost_b2_Command b2.exe )
endif()
ExternalProject_Add(Boost_external_Download
URL ${Boost_url}
URL_HASH ${Boost_Hash}
BUILD_IN_SOURCE 1
UPDATE_COMMAND ""
PATCH_COMMAND ""
CONFIGURE_COMMAND ${Boost_Bootstrap_Command}
BUILD_COMMAND ${Boost_b2_Command} install
--with-system
--with-chrono
--with-filesystem
--disable-icu
--prefix=${CMAKE_BINARY_DIR}/Boost
--threading=single,multi
--link=shared
--variant=release
-j8
INSTALL_COMMAND ""
INSTALL_DIR ""
)
#CACHE PATH "" seems to write the path to a file that I can set
#library paths to.
set(Boost_LIBRARY_DIR ${CMAKE_BINARY_DIR}/Boost/lib CACHE PATH "")
if(WIN32)
set(Boost_INCLUDE_DIR ${CMAKE_BINARY_DIR}/Boost/include/boost-1_70 CACHE PATH "")
set(BOOST_ROOT ${CMAKE_BINARY_DIR}/Boost)
else()
set(Boost_INCLUDE_DIR ${CMAKE_BINARY_DIR}/Boost/include CACHE PATH "")
endif()
ExternalProject_Get_Property(Boost_external_Download BINARY_DIR)
SET(Boost_DIR ${BINARY_DIR} CACHE PATH "")
add_library(Boost_external SHARED IMPORTED)
message(STATUS "Boost_DIR: ${Boost_DIR}")
但是当我调用这个cmake文件时,我收到错误:
-- verifying file...
file='/home/sailanarmo/Documents/build/Superbuild/Download/Boost_external_Download/boost_1_70_0.tar.gz'
-- SHA256 hash of
/home/sailanarmo/Documents/build/Superbuild/Download/Boost_external_Download/boost_1_70_0.tar.gz
does not match expected value
expected: '882b48708d211a5f48e60b0124cf5863c1534cd544ecd0664bb534a4b5d506e9'
actual: 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'
-- File already exists but hash mismatch. Removing...
这没有意义,因为我在 .cmake 文件中输入了正确的哈希和正确的协议。但是,实际似乎与我粘贴的内容不匹配。我做错了什么吗?
我找到了原因。
构建 CMake 时,必须配置 SSL 支持,否则 CMake 将不允许使用 https
协议。为此,您需要将 CMake 配置为如下:
./bootstrap --system-curl
make
sudo make install
这将使用Linux的系统curl,它应该配置SSL支持。但是,而不是手动重新安装CMake。我决定把s放在https
.这意味着我将https://dl.bintray.com/boostorg/release/1.70.0/source/boost_1_70_0.tar.gz
更改为http://dl.bintray.com/boostorg/release/1.70.0/source/boost_1_70_0.tar.gz
,它下载和编译得很好。
相关文章:
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 使用Qt C++计算类似Git的SHA1哈希
- 如何将这个C++哈希表转换为动态扩展和收缩,而不是使用硬设置的最大值
- 用C++将哈希表写入文件并从文件中恢复
- c++找不到具有相同哈希的无序集合元素
- 哈希文件递归并保存到矢量Cryptopp中
- 对 pair<pair<int,int>pair<int,int unordered_map进行哈希处理>>
- 直接在 unordered_map 的方法中使用哈希,而不是生成哈希的用户定义对象
- 如何为字符串生成唯一但一致的 N 位哈希(小于 64 位)?
- 使用对象的基类部分模板专用化对对象进行哈希处理::哈希
- boost::包含提升单元的元组的哈希值
- 使用 Key 对 C++ 中的哈希映射进行排序. 无法排序
- C++中的并发哈希表
- 哈希映射使用 nullptr c++ 初始化节点的动态数组
- 在具有开放寻址的哈希表中插入节点 [优化逻辑]
- 与C++哈希表的基础知识混淆
- 如何为位集找到/实现一个好的哈希函数
- 如何通过 CMake 使用他们的 SHA256 哈希下载提升?
- CMake检查下载文件的哈希值(MD5/SHA256)