ESP32 环境配置
ESP32 使用官方 ESP-IDF 工作流。
官方入口:
ESP32-C3 / S3 / C6 等芯片见对应芯片的 Getting Started 页面。
工程接入
LibXR 在 ESP32 上仍然通过 cmake/esp32.cmake 接入,但它的前提很明确:必须运行在 ESP-IDF 的 component 工程里。
对于官方 Hello World 这种标准工程,在 main/CMakeLists.txt 里先写完 idf_component_register(...),再在后面加入:
include(path_to_libxr/cmake/esp32.cmake)
path_to_libxr 为 LibXR 所在路径,这一行放在 idf_component_register(...) 之后。
esp32.cmake 会做什么
这份脚本完成以下工作:
- 设置
LIBXR_SYSTEM=freertos、LIBXR_DRIVER=esp,并打开LIBXR_STATIC_BUILD - 未定义
LIBXR_SINGLE_CORE时,按CONFIG_SOC_CPU_CORES_NUM和CONFIG_FREERTOS_UNICORE设定:多核且未启用CONFIG_FREERTOS_UNICORE时为OFF,否则为ON - 目标
xr不存在时用add_subdirectory加入 LibXR - 把
xr链接到存在的 IDF 组件:idf::freertos、idf::driver、idf::hal、idf::usb、idf::esp_hw_support、idf::esp_timer、idf::esp_event、idf::esp_netif、idf::esp_wifi、idf::esp_adc、idf::nvs_flash,以及新版 IDF 拆分出的idf::esp_driver_gpio、idf::esp_driver_ledc - 最后把
xr链接到当前组件(target_link_libraries(${COMPONENT_LIB} PUBLIC xr)),因此这行include要放在idf_component_register(...)之后
脚本检查 idf::freertos 是否存在,不存在时报错,因此只能在由 idf.py 构建的组件中使用。
当前环境信息
当前 docker-image-esp32 预装 ESP-IDF v5.4.1。更新的 5.x 稳定版本使用相同的接入方式,组件拆分和目录结构以所安装的 IDF 为准。