You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CMake中FetchContent的URL含#触发BYPRODUCTS不允许含#的错误求助

问题描述

在CMake的FetchContent中使用带#的URL时触发错误:BYPRODUCTS包含"#"是不被允许的。

相关代码
if (NOT glad_FOUND)
    include(FetchContent)
    FetchContent_Declare(
            glad
            URL "https://glad.dav1d.de/#language=c&specification=gl&api=gl%3D4.6&api=gles1%3Dnone&api=gles2%3Dnone&api=glsc2%3Dnone&profile=compatibility&loader=on"
            DOWNLOAD_NO_EXTRACT TRUE

    )
    FetchContent_MakeAvailable(glad)
endif()
错误信息

CMake Error at D:/IDEs/apps/CLion/ch-0/222.4167.35/bin/cmake/win/share/cmake-3.23/Modules/ExternalProject.cmake:2302:EVAL:2 (add_custom_command):
BYPRODUCTS containing a "#" is not allowed.

解决方案

问题出在你使用的是glad在线生成页面的URL(包含锚点#),而非直接的资源下载链接。CMake会将该URL对应的网页文件作为下载产物,处理时因文件名含#触发限制。解决步骤如下:

  • 打开目标glad在线生成页面,点击页面中的Generate按钮完成代码生成。
  • 在生成后的页面中,点击下载按钮获取实际的压缩包URL(格式类似https://glad.dav1d.de/generated/glad-xxxx.zip)。
  • 将CMakeLists.txt中的URL替换为这个实际的下载链接,同时根据需求调整DOWNLOAD_NO_EXTRACT参数(通常需移除该参数,让CMake自动解压压缩包)。

调整后的示例代码:

if (NOT glad_FOUND)
    include(FetchContent)
    FetchContent_Declare(
            glad
            URL "https://glad.dav1d.de/generated/glad-xxxx.zip"
            # 可选:添加URL_HASH确保下载文件完整性,例如:
            # URL_HASH SHA256=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    )
    FetchContent_MakeAvailable(glad)
endif()

内容的提问来源于stack exchange,提问作者Chu Chun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 08:50:29