29集【重要】 ESP-IDF cmake编译流程梳理-《MCU嵌入式AI开发笔记》

29集【重要】 ESP-IDF cmake编译流程梳理-《MCU嵌入式AI开发笔记》

ESP-IDF的cmake流程梳理

1、最上层ai-chat目录下的CMakeLists.txt:
2、d:\Espressif\frameworks\esp-idf-v5.2.2\tools\cmake\project.cmake
-》targets.cmake(d:\Espressif\frameworks\esp-idf-v5.2.2\tools\cmake\targets.cmake)
-》idf.cmake(d:\Espressif\frameworks\esp-idf-v5.2.2\tools\cmake\idf.cmake)
-》include(build)
set(IDF_PATH KaTeX parse error: Expected group after '_' at position 434: …on) _̲_build_init("{idf_path}“)
-》 idf_build_process( I D F T A R G E T S D K C O N F I G D E F A U L T S " {IDF_TARGET} SDKCONFIG_DEFAULTS " IDFTARGETSDKCONFIGDEFAULTS"{sdkconfig_defaults}”
SDKCONFIG ${sdkconfig}
BUILD_DIR ${build_dir}
PROJECT_NAME ${CMAKE_PROJECT_NAME}
PROJECT_DIR C M A K E C U R R E N T L I S T D I R P R O J E C T V E R " {CMAKE_CURRENT_LIST_DIR} PROJECT_VER " CMAKECURRENTLISTDIRPROJECTVER"{project_ver}"
COMPONENTS “ c o m p o n e n t s ; {components}; components;{test_components}”)
-》set(project_elf ${CMAKE_PROJECT_NAME}.elf)
-》foreach(build_component b u i l d c o m p o n e n t s ) t a r g e t l i n k l i b r a r i e s ( {build_components}) target_link_libraries( buildcomponents)targetlinklibraries({project_elf} PRIVATE
“-Wl,-force_load”
${build_component})
-》add_custom_target(size
COMMAND C M A K E C O M M A N D − D " I D F S I Z E T O O L = {CMAKE_COMMAND} -D "IDF_SIZE_TOOL= CMAKECOMMANDD"IDFSIZETOOL={idf_size}"
-D “MAP_FILE= m a p f i l e " − D " O U T P U T J S O N = {mapfile}" -D "OUTPUT_JSON= mapfile"D"OUTPUTJSON={OUTPUT_JSON}”
-P “${idf_path}/tools/cmake/run_size_tool.cmake”
DEPENDS ${mapfile}
USES_TERMINAL
VERBATIM
)
-》__add_dfu_targets()

-》idf_build_executable(${project_elf})

重要的log

menuconfig的log

[SDK Configuration Editor]
---------------------------ERROR--------------------------

WARNING: Python interpreter “D:\Espressif\python_env\idf5.2_py3.11_env\Scripts\python.exe” used to start idf.py is not from installed venv “D:/Espressif/python_env/idf5.2_py3.11_env”

-----------------------END OF ERROR-----------------------
Executing action: confserver
Running cmake in directory D:\workspace\esp-idf\ai_chat\build
Executing “cmake -G Ninja -DPYTHON_DEPS_CHECKED=1 -DPYTHON=D:\Espressif\python_env\idf5.2_py3.11_env\Scripts\python.exe -DESP_PLATFORM=1 -DCCACHE_ENABLE=1 D:\workspace\esp-idf\ai_chat”…
– Found Git: D:/Espressif/tools/idf-git/2.44.0/cmd/git.exe (found version “2.44.0.windows.1”)

– ccache will be used for faster recompilation

– The C compiler identification is GNU 13.2.0

– The CXX compiler identification is GNU 13.2.0

– The ASM compiler identification is GNU

– Found assembler: D:/Espressif/tools/riscv32-esp-elf/esp-13.2.0_20230928/riscv32-esp-elf/bin/riscv32-esp-elf-gcc.exe

– Detecting C compiler ABI info

– Detecting C compiler ABI info - done

– Check for working C compiler: D:/Espressif/tools/riscv32-esp-elf/esp-13.2.0_20230928/riscv32-esp-elf/bin/riscv32-esp-elf-gcc.exe - skipped

– Detecting C compile features

– Detecting C compile features - done

– Detecting CXX compiler ABI info

– Detecting CXX compiler ABI info - done

– Check for working CXX compiler: D:/Espressif/tools/riscv32-esp-elf/esp-13.2.0_20230928/riscv32-esp-elf/bin/riscv32-esp-elf-g++.exe - skipped

– Detecting CXX compile features

– Detecting CXX compile features - done

– git rev-parse returned ‘fatal: not a git repository (or any of the parent directories): .git’
– Could not use ‘git describe’ to determine PROJECT_VER.
– Building ESP-IDF components for target esp32c3

Processing 7 dependencies:

[1/7] espressif/esp-dsp (1.4.12)

[2/7] espressif/esp_lcd_touch (1.1.2) from file:///D:/Espressif/registry

[3/7] espressif/esp_lcd_touch_ft5x06 (1.0.6)

[4/7] espressif/jsmn (1.1.0)

[5/7] espressif/nghttp (1.62.1)

[6/7] idf (5.2.2)

[7/7] lvgl/lvgl (8.3.11) from file:///D:/Espressif/registry

– Project sdkconfig file D:/workspace/esp-idf/ai_chat/sdkconfig

Loading defaults file D:/workspace/esp-idf/ai_chat/sdkconfig.defaults…

– Looking for sys/types.h

– Looking for sys/types.h - found

– Looking for stdint.h

– Looking for stdint.h - found

– Looking for stddef.h

– Looking for stddef.h - found

– Check size of time_t

– Check size of time_t - done

– Found Python3: D:/Espressif/python_env/idf5.2_py3.11_env/Scripts/python.exe (found version “3.11.2”) found components: Interpreter

– Performing Test CMAKE_HAVE_LIBC_PTHREAD

– Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success

Build 的log

  • 正在执行任务: D:\Espressif\tools\ninja

[0/1] Re-running CMake…-- ccache will be
– git rev-parse returned 'fatal: not a gi
– Could not use ‘git describe’ to determi
– Building ESP-IDF components for target
Processing 7 dependencies:
[1/7] espressif/esp-dsp (1.4.12)
[2/7] espressif/esp_lcd_touch (1.1.2) from
[3/7] espressif/esp_lcd_touch_ft5x06 (1.0.
[4/7] espressif/jsmn (1.1.0)
[5/7] espressif/nghttp (1.62.1)
[6/7] idf (5.2.2)
[7/7] lvgl/lvgl (8.3.11) from file:///D:/E
– Project sdkconfig file D:/workspace/esp
Loading defaults file D:/workspace/esp-idf
– App “ai_chat” version: 1
– Adding linker script D:/workspace/esp-i
– Adding linker script D:/workspace/esp-i
– Adding linker script D:/Espressif/frame
– Adding linker script D:/Espressif/frame
– Adding linker script D:/Espressif/frameld
– Adding linker script D:/Espressif/frameld
– Adding linker script D:/Espressif/frame.ld
– Adding linker script D:/Espressif/frame-- Adding linker script D:/Espressif/frame
– Chip is esp32c3, D:/Espressif/esp-adf/c
– Current board name is CONFIG_AUDIO_BOAR
– Components: adf_utils app_trace app_updo_stream battery_service bluetooth_service_service cxx display_service driver dueros_format esp_bootloader_format esp_codec_de
esp_gdbstub esp_hid esp_http_client esp_htcal_ctrl esp_mm esp_netif esp_netif_stack rom esp_system esp_timer esp_wifi espcoreuch_ft5x06 espressif__jsmn espressif__nght
input_key_service json log lvgl__lvgl lwipad ota_service partition_table playlist prort tone_partition ulp unity usb vfs wear

– Component paths: D:/Espressif/esp-adf/capp_trace D:/Espressif/frameworks/esp-idf-rd D:/Espressif/esp-adf/components/audio_h/components/audio_recorder D:/Espressif/esm D:/Espressif/esp-adf/components/battery_/frameworks/esp-idf-v5.2.2/components/bootpport D:/Espressif/frameworks/esp-idf-v5.2rameworks/esp-idf-v5.2.2/components/cmock /esp-adf/components/coredump_upload_servicsp-adf/components/display_service D:/Esprecomponents/dueros_service D:/Espressif/fras/esp-adf-libs D:/Espressif/esp-adf/compon
D:/Espressif/esp-adf/components/esp_actionif/frameworks/esp-idf-v5.2.2/components/estloader_format D:/Espressif/esp-adf/componsp_coex D:/Espressif/frameworks/esp-idf-v5her D:/Espressif/frameworks/esp-idf-v5.2.2esp_event D:/Espressif/esp-adf/components/dbstub D:/Espressif/frameworks/esp-idf-v5.ts/esp_http_client D:/Espressif/frameworks-idf-v5.2.2/components/esp_https_ota D:/Esssif/frameworks/esp-idf-v5.2.2/components/cd D:/Espressif/frameworks/esp-idf-v5.2.2/nents/esp_mm D:/Espressif/frameworks/esp-icomponents/esp_netif_stack D:/Espressif/frcomponents/esp_peripherals D:/Espressif/fr-idf-v5.2.2/components/esp_pm D:/Espressifs/esp-idf-v5.2.2/components/esp_ringbuf D:rameworks/esp-idf-v5.2.2/components/esp_sypressif/frameworks/esp-idf-v5.2.2/componenump D:/workspace/esp-idf/ai_chat/managed_conents/espressif__esp_lcd_touch D:/workspapace/esp-idf/ai_chat/managed_components/esf__nghttp D:/Espressif/frameworks/esp-idf-mponents/fatfs D:/Espressif/frameworks/esp/components/hal D:/Espressif/frameworks/esmponents/http_parser D:/Espressif/frameworv5.2.2/components/ieee802154 D:/Espressif/5.2.2/components/json D:/Espressif/framewo_components/lvgl__lvgl D:/Espressif/framew
D:/Espressif/frameworks/esp-idf-v5.2.2/com D:/workspace/esp-idf/ai_chat/components/mpressif/frameworks/esp-idf-v5.2.2/componen_provider D:/Espressif/frameworks/esp-idf-ce D:/Espressif/frameworks/esp-idf-v5.2.2//Espressif/frameworks/esp-idf-v5.2.2/compotocomm D:/Espressif/frameworks/esp-idf-v5.ts/riscv D:/Espressif/frameworks/esp-idf-vts/soc D:/Espressif/frameworks/esp-idf-v5.ents/spiffs D:/Espressif/frameworks/esp-id_partition D:/Espressif/frameworks/esp-idfts/unity D:/Espressif/frameworks/esp-idf-v/vfs D:/Espressif/frameworks/esp-idf-v5.2.ponents/wifi_provisioning D:/Espressif/espmponents/wpa_supplicant
– Configuring done
– Generating done
– Build files have been written to: D:/wo

[9/1607] Generating …/…/partition_table/
Partition table binary generated. Contents


ESP-IDF Partition Table

Name, Type, SubType, Offset, Size, Flags

nvs,data,nvs,0x9000,16K,
phy_init,data,phy,0xd000,4K,
factory,app,factory,0x10000,7M,


[780/1607] Performing configure step for ’
– Found Git: D:/Espressif/tools/idf-git/2
– The C compiler identification is GNU 13
– The CXX compiler identification is GNU
– The ASM compiler identification is GNU
– Found assembler: D:/Espressif/tools/riscc.exe
– Detecting C compiler ABI info
– Detecting C compiler ABI info - done
– Check for working C compiler: D:/Espresv32-esp-elf-gcc.exe - skipped
– Detecting C compile features
– Detecting C compile features - done
– Detecting CXX compiler ABI info
– Detecting CXX compiler ABI info - done
– Check for working CXX compiler: D:/Esprscv32-esp-elf-g++.exe - skipped
– Detecting CXX compile features
– Detecting CXX compile features - done
– Building ESP-IDF components for target
– Project sdkconfig file D:/workspace/esp
– Looking for sys/types.h
– Looking for sys/types.h - found
– Looking for stdint.h
– Looking for stdint.h - found
– Looking for stddef.h
– Looking for stddef.h - found
– Check size of time_t
– Check size of time_t - done
– Adding linker script D:/Espressif/frame
– Bootloader project name: “bootloader” v
– Adding linker script D:/Espressif/frame
– Adding linker script D:/Espressif/frame
– Adding linker script D:/Espressif/frameld
– Adding linker script D:/Espressif/frameld
– Adding linker script D:/Espressif/framebootloader.ld
– Adding linker script D:/Espressif/framebootloader.rom.ld
– Components: bootloader bootloader_suppot esp_rom esp_system esptool_py freertos h
– Component paths: D:/Espressif/framework-v5.2.2/components/bootloader_support D:/Eworks/esp-idf-v5.2.2/components/esp_app_foformat D:/Espressif/frameworks/esp-idf-v5.nents/esp_hw_support D:/Espressif/framewor5.2.2/components/esp_system D:/Espressif/f/esp-idf-v5.2.2/components/freertos D:/Esps/esp-idf-v5.2.2/components/log D:/EspressEspressif/frameworks/esp-idf-v5.2.2/compons/esp-idf-v5.2.2/components/newlib D:/Esprf/frameworks/esp-idf-v5.2.2/components/risframeworks/esp-idf-v5.2.2/components/spi_f
– Configuring done
– Generating done
– Build files have been written to: D:/wo
[1231/1607] Performing build step for 'boo
[1/97] Generating project_elf_src_esp32c3.
[2/97] Building C object esp-idf/soc/CMake
[3/97] Building C object esp-idf/soc/CMake
[4/97] Building C object esp-idf/soc/CMake
[5/97] Building C object esp-idf/soc/CMake
[6/97] Building C object esp-idf/soc/CMake
[7/97] Building C object CMakeFiles/bootlo
[8/97] Building C object esp-idf/soc/CMake
[9/97] Building C object esp-idf/soc/CMake
[10/97] Building C object esp-idf/soc/CMak
[11/97] Building C object esp-idf/soc/CMak
[12/97] Building C object esp-idf/soc/CMak
[13/97] Building C object esp-idf/soc/CMak
[14/97] Building C object esp-idf/soc/CMak
[15/97] Building C object esp-idf/soc/CMak
[16/97] Building C object esp-idf/soc/CMak

  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柔贝特三哥

你的鼓励是我坚持创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值