跳到主要内容

kmpkg_download_distfile

下载并缓存此端口所需的分发文件。

此辅助函数应始终替代 CMake 内置的 file(DOWNLOAD) 命令使用,因为它 支持资产缓存(Asset Caching)等特性。

如果可能,应优先使用各类 kmpkg_from_* 系列函数,而非直接调用此函数, 例如以下这些:

用法

kmpkg_download_distfile(
<out-var>
URLS <http://mainUrl> <http://mirror1>...
FILENAME <output.zip>
SHA512 <5981de...>
[ALWAYS_REDOWNLOAD]
)

参数

out-var

用于存储已下载文件完整路径的输出变量名称。

该变量随后可直接传递给 kmpkg_extract_source_archive 来提取源码包。

按照惯例,通常使用 ARCHIVE 作为输出变量名。

kmpkg_download_distfile(
ARCHIVE # 这是输出变量(out-var)
URLS "https://downloads.apache.org/apr/apr-${VERSION}.tar.bz2"
FILENAME "apr-${VERSION}.tar.bz2"
SHA512 629b60680d1244641828019db903a1b199e8a19c8f27a5132b93faacb381ce561f88463345ab019258f1f1e8cfdf8aa986ac815153a8e7e04a22b3932f9fedd2
)

URLS

待尝试的 URL 列表。这些 URL 会按顺序逐个尝试,直到其中一个下载的文件与指定的 SHA512 哈希值匹配成功。

FILENAME

文件的本地命名。文件会在不同端口间共享,因此可能需要重命名文件,以明确归属此端口并避免命名冲突。

SHA512

文件的预期哈希值。

如果下载文件的哈希值与该值不匹配,构建流程会终止,并输出描述哈希值不匹配的提示信息。

QUIET

命中缓存时抑制输出日志。

SKIP_SHA512

跳过文件的 SHA512 哈希值校验。

此开关仅在通过 --head 命令行标志构建时有效。

ALWAYS_REDOWNLOAD

禁用缓存机制;适用于 REST 接口调用或其他下载内容不稳定的场景。

使用此选项时必须同时指定 SKIP_SHA512

HEADERS

要附加到下载请求中的请求头列表。可用于下载时的身份验证。

请求头需按 "请求头名称: 请求头值" 的格式指定。

示例

源码

scripts/cmake/kmpkg_download_distfile.cmake