Page 1 of 1

idf.py add-dependency lvgl 错误[已解决]

Posted: Wed Jul 20, 2022 1:12 am
by seanfan@qq.com
如题,
针对ESP-IDF5.0,项目中要用到LVGL,通过https://components.espressif.com/search/org:lvgl,查到有注册库lvgl 8.3.0;
于是用idf.py add-dependency lvgl==8.3.0添加支持LVGL时,命令能成功。但在 idf.py set-target esp32s3时,提示如下错误:

-- Building ESP-IDF components for target esp32s3
Solving dependencies requirements
CMake Error at D:/Espressif/frameworks/esp-idf/tools/cmake/build.cmake:525 (message):
Traceback (most recent call last):

File "runpy.py", line 194, in _run_module_as_main
File "runpy.py", line 87, in _run_code
File "D:\Espressif\python_env\idf5.0_py3.8_env\lib\site-packages\idf_component_manager\prepare_components\__main__.py", line 3, in <module>
main()
File "D:\Espressif\python_env\idf5.0_py3.8_env\lib\site-packages\idf_component_manager\prepare_components\prepare.py", line 126, in main
args.func(args)
File "D:\Espressif\python_env\idf5.0_py3.8_env\lib\site-packages\idf_component_manager\prepare_components\prepare.py", line 39, in prepare_dep_dirs
ComponentManager(args.project_dir).prepare_dep_dirs(
File "D:\Espressif\python_env\idf5.0_py3.8_env\lib\site-packages\idf_component_manager\core.py", line 404, in prepare_dep_dirs
downloaded_component_paths = download_project_dependencies(
File "D:\Espressif\python_env\idf5.0_py3.8_env\lib\site-packages\idf_component_manager\dependencies.py", line 99, in download_project_dependencies
solution = solver.solve()
File "D:\Espressif\python_env\idf5.0_py3.8_env\lib\site-packages\idf_component_manager\version_solver\version_solver.py", line 33, in solve
result = self._solver.solve()
File "D:\Espressif\python_env\idf5.0_py3.8_env\lib\site-packages\idf_component_manager\version_solver\mixology\version_solver.py", line 63, in solve
if not self._run():
File "D:\Espressif\python_env\idf5.0_py3.8_env\lib\site-packages\idf_component_manager\version_solver\mixology\version_solver.py", line 76, in _run
self._propagate(next_package)
File "D:\Espressif\python_env\idf5.0_py3.8_env\lib\site-packages\idf_component_manager\version_solver\mixology\version_solver.py", line 108, in _propagate
root_cause = self._resolve_conflict(incompatibility)
File "D:\Espressif\python_env\idf5.0_py3.8_env\lib\site-packages\idf_component_manager\version_solver\mixology\version_solver.py", line 282, in _resolve_conflict
raise SolverFailure(incompatibility)

idf_component_manager.version_solver.mixology.failure.SolverFailure:
Because project depends on espressif/lvgl (==8.3.0) which doesn't match any
versions, version solving failed.

Call Stack (most recent call first):
D:/Espressif/frameworks/esp-idf/tools/cmake/project.cmake:434 (idf_build_process)
CMakeLists.txt:20 (project)


-- Configuring incomplete, errors occurred!



是不是目前LVGL不支持idf-manager?

谢谢

Re: idf.py add-dependency lvgl 错误

Posted: Wed Jul 20, 2022 2:40 am
by ESP_Gargamel
这句有问题:idf.py add-dependency lvgl==8.3.0
需改为:idf.py add-dependency lvgl/lvgl==8.3.0

红色部分,如果不指明的话,默认会从 espressif 下找,但 espressif 又没有提供 lvgl,所以报错:

Code: Select all

Because project depends on espressif/lvgl (==8.3.0) which doesn't match any
versions, version solving failed.
这个相当于是一个维护者的 name。

Re: idf.py add-dependency lvgl 错误

Posted: Wed Jul 20, 2022 2:49 am
by ESP_Gargamel
另外,idf.py add-dependency lvgl==8.3.0 后,会在 main 目录下生成 idf_component.yml,你可以打开看下,类似如下:

Code: Select all

## IDF Component Manager Manifest File
dependencies:
  espressif/lvgl: "==8.3.0"
  ## Required IDF version
  idf:
    version: ">=4.1.0"
  # # Put list of dependencies here
  # # For components maintained by Espressif:
  # component: "~1.0.0"
  # # For 3rd party components:
  # username/component: ">=1.0.0,<2.0.0"
  # username2/component2:
  #   version: "~1.0.0"
  #   # For transient dependencies `public` flag can be set.
  #   # `public` flag doesn't have an effect dependencies of the `main` component.
  #   # All dependencies of `main` are public by default.
  #   public: true
你也可以直接改 espressif/lvgl 成 lvgl/lvgl。
如果你直接又执行了 idf.py add-dependency lvgl/lvgl==8.3.0,那么这个文件中会是:

Code: Select all

lvgl/lvgl: "==8.3.0"
espressif/lvgl: "==8.3.0"
你需要把 espressif/lvgl 这行删除。