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

Ubuntu编译esp-box factory_demo报define_property command is not scriptable错误

报错根因

这个错误是系统安装的CMake版本与当前使用的ESP-IDF版本不兼容导致的:

  • 报错环境使用的是CMake 3.22版本,而esp-box仓库的factory_demo示例默认适配ESP-IDF v4.4.x稳定分支,该分支官方兼容的CMake版本范围为3.16~3.21。CMake 3.22版本调整了define_property命令的执行权限校验,将其标记为不可在脚本模式下调用的命令,旧版ESP-IDF的构建逻辑会在脚本执行阶段触发ExternalProject模块的对应代码段,直接抛出该错误。
  • 你贴出的项目CMakeLists.txt文件本身没有语法或配置错误,无需修改,不要在项目配置文件上做无意义的试错。
可行解决方案

方案1:使用ESP-IDF适配版本的CMake(最稳定,推荐)

不需要手动调整系统CMake版本,直接用ESP-IDF官方脚本自动安装匹配的依赖即可,操作步骤:

  1. 进入本地ESP-IDF代码根目录,执行官方安装脚本,脚本会自动下载安装当前分支ESP-IDF兼容的CMake、Python依赖等所有组件,不会和系统全局安装的版本产生冲突:
./install.sh
  1. 重新加载ESP-IDF环境变量:
. ./export.sh
  1. 回到factory_demo项目目录,清理之前的构建缓存后重新编译烧录:
idf.py fullclean
idf.py flash monitor

方案2:升级ESP-IDF到适配高版本CMake的分支

如果需要保留系统全局的CMake 3.22版本,可以将本地ESP-IDF和esp-box代码都切换到release/v5.0及以上的稳定分支,这些分支已经适配了CMake 3.22+的权限校验逻辑。注意切换分支后需要重新执行ESP-IDF根目录下的install.sh安装对应版本的依赖,同时要确认切换后的esp-box分支与你的硬件版本匹配,避免出现硬件驱动不兼容问题。

注意:无论选择哪种方案,切换完环境后必须执行idf.py fullclean清除旧的构建缓存,否则缓存中残留的旧CMake配置仍会触发相同报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 10:18:30