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

如何填充conandata.yml?能否向其中写入代码执行时间?

关于conandata.yml的填充与写入操作

一、基础填充conandata.yml

conandata.yml是Conan用于存储包元数据(版本、源码地址、哈希值等)的配置文件,手动填充直接遵循YAML语法编辑即可:

  • 示例基础结构(存储版本与源码信息):
sources:
  "1.0.0":
    url: "https://example.com/foo-1.0.0.tar.gz"
    sha256: "abcdef1234567890abcdef1234567890"
  "2.0.0":
    url: "https://example.com/foo-2.0.0.tar.gz"
    sha256: "0987654321fedcba0987654321fedcba"
  • 若要添加自定义字段(比如你需要的执行时间),直接在文件中新增节点:
custom_data:
  execution_time: 0.0

二、程序化写入conandata.yml

如果需要动态写入内容(比如计算执行时间后自动更新),可以用Python脚本结合pyyaml库实现,步骤如下:

  1. 先安装依赖库:pip install pyyaml
  2. 核心逻辑:读取现有文件→修改数据→写回文件

三、计算代码执行时间并写入的示例

以下是完整的脚本示例,可直接复用:

import yaml
import time

# 替换为你需要计时的代码逻辑
def target_code():
    # 示例:模拟耗时操作
    time.sleep(1.5)

# 计算执行时间
start = time.time()
target_code()
cost_time = round(time.time() - start, 2)

# 读取conandata.yml(文件不存在则初始化空字典)
try:
    with open("conandata.yml", "r") as f:
        conandata = yaml.safe_load(f) or {}
except FileNotFoundError:
    conandata = {}

# 更新执行时间字段
if "custom_data" not in conandata:
    conandata["custom_data"] = {}
conandata["custom_data"]["execution_time"] = cost_time

# 写回文件(sort_keys=False保持原有字段顺序)
with open("conandata.yml", "w") as f:
    yaml.dump(conandata, f, sort_keys=False, default_flow_style=False)

执行后,conandata.yml的custom_data节点会被更新为:

custom_data:
  execution_time: 1.51

注意事项

  • 用yaml.safe_load而非yaml.load,避免潜在安全风险
  • 如果是在Conan recipe中执行,可将这段逻辑嵌入build()或自定义方法中,直接操作recipe内的conandata对象
  • 写入时保留sort_keys=False,防止打乱手动配置的字段顺序

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 11:01:11